CSS!important似乎在jQuery/Firefox 3.x中不起作用

Cap*_*ack 5 css firefox jquery

见小提琴:http://jsfiddle.net/csaltyj/P2sLa/

在Chrome中,这种方法很好,但在Firefox中却没有,并产生Javascript警告.我知道这里不需要!important,但我有一个需要的大型项目,这导致Firefox崩溃.有任何想法吗?

rub*_*iii 11

搜索"jquery css important"提出了一篇解释"问题"的博客文章.
我会发布一些额外的信息,但总而言之,这是你的解决方案:

$('#set-bg').click(function() {
    $('#box').css('cssText', 'background: blue !important');
});
Run Code Online (Sandbox Code Playgroud)

作者指出:

这不是一个错误,而是大多数浏览器不承认需要的东西,因为内联样式已经具有除用户定义的优先级之外的最高优先级.(除非您不希望您的用户更改他们查看您网站的方式).

请注意,使用cssText有一个缺点,您可能需要考虑
使用cssRules:

cssText将覆盖该特定元素的css.因此,您将不得不重新声明该特定元素的规则.

尽管如此.请听听作者的总结:

在CSS中使用!important是不可取的,因为它可能会破坏您的Web可用性.此外,没有理由要使用!important,因为内联样式已经具有最高优先级.因此,在考虑可能为用户带来的后果后,您可能需要重新考虑在脚本上应用!important.

  • 这也有效:`$('#box').attr('style',$('#box').attr('style')+'background:blue!important;')` (5认同)