Can I use jquery to remove/negate css !important rule?

后端 未结 5 1389
挽巷
挽巷 2020-12-16 12:07

If there is a CSS rule that uses !important, is there a way to remove the !important rule so that I can make further downstream style changes with

相关标签:
5条回答
  • 2020-12-16 12:08

    you can add a new css style with the !important added to it that will override the original style

    This is from another answer in javascript:

    function addNewStyle(newStyle) {
    var styleElement = document.getElementById('styles_js');
    if (!styleElement) {
        styleElement = document.createElement('style');
        styleElement.type = 'text/css';
        styleElement.id = 'styles_js';
        document.getElementsByTagName('head')[0].appendChild(styleElement);
    }
    styleElement.appendChild(document.createTextNode(newStyle));
    }
    
     addNewStyle('td.EvenRow a {display:inline !important;}')
    

    this answer is here

    Also I believe that you can add styling like this

            .css({ 'display' : 'block !important' });
    

    in jQuery

    0 讨论(0)
  • 2020-12-16 12:17

    Unfortunately, you cannot override !important without using !important as inline/internal style below the included theirs.css.

    You can define a !important style and add it to .stubborn then adjust the opacity.. See below,

    CSS:

    div.hidden_block_el { 
       display: block !important;
       opacity: 0;
    }
    

    JS:

    $('.stubborn')
        .addClass('hidden_block_el')
        .animate({opacity: 1});
    

    DEMO: http://jsfiddle.net/jjWJT/1/

    Alternate approach (inline),

    $('.stubborn')
        .attr('style', 'display: block !important; opacity: 0;')
        .animate({opacity: 1});
    

    DEMO: http://jsfiddle.net/jjWJT/

    0 讨论(0)
  • 2020-12-16 12:26

    You need to create a new class to apply fade.

    CSS:

    div.stubborn { display: none !important; }
    div.stubborn.fade-ready { display: block !important; opacity: 0; }
    

    JS:

    $('.stubborn').addClass('fade-ready').animate({opacity: 1}); //to show
    $('.stubborn').fadeOut(function() {$(this).removeClass('fade-ready');}); //to hide
    

    DEMO HERE

    0 讨论(0)
  • 2020-12-16 12:26

    I have tried several methods, but the best results I've obtained by adding the CSS style (!important) in a separate class, then remove with jQuery:

    CSS:

    .important-css-here { display: block !important;}
    

    In jQuery:

    $("#selector").addClass("important-css-here");
    

    then, when I need:

    $("#selector").removeClass("important-css-here");
    

    work like a charm ;-)

    0 讨论(0)
  • 2020-12-16 12:28

    Just add a style="" tag to any images with this issue, hopefully they all have some sort of defining class to them that it's easy to do so.

    $('div.stubborn').attr('style', 'display: inline !important;');​
    

    jsFiddle DEMO

    0 讨论(0)
提交回复
热议问题