21

如果有使用的 CSS 规则,!important有没有办法删除该!important规则,以便我可以使用 JS 或 jQuery 进行进一步的下游样式更改?

他们的.css

div.stubborn { display: none !important; }

我的.js

$('.stubborn').fadeIn();  // won't work because of !important flag

不幸的是,我无法控制应用!important规则的样式,所以我需要一个变通方法。

4

5 回答 5

18

!important不幸的是,如果不使用!important包含的内联/内部样式,则无法覆盖theirs.css

您可以定义!important样式并将其添加到.stubborn然后调整不透明度。见下文,

CSS:

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

JS:

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

演示:http: //jsfiddle.net/jjWJT/1/

替代方法(内联),

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

演示:http: //jsfiddle.net/jjWJT/

于 2012-08-09T19:48:24.620 回答
5

只需将style=""标签添加到任何有此问题的图像,希望它们都有某种定义类,这样做很容易。

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

jsFiddle 演示

于 2012-08-09T19:58:07.797 回答
1

您需要创建一个新类来应用淡入淡出。

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

在这里演示

于 2012-08-09T19:45:40.557 回答
0

您可以添加一个新的 CSS 样式,其中添加了 !important 将覆盖原始样式

这是来自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;}')

这个答案在这里

我也相信你可以添加这样的样式

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

在 jQuery 中

于 2012-08-09T19:44:00.053 回答
0

我尝试了几种方法,但通过在单独的类中添加 CSS 样式(!important),然后使用 jQuery 删除,我获得了最好的结果:

CSS:

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

在 jQuery 中:

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

然后,当我需要时:

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

像魅力一样工作;-)

于 2014-05-05T16:50:39.377 回答