我在jQuery UI小部件中工作很多,并且由于我需要解决的疏忽,主题变得越来越难。
考虑这个问题:
<div id="node" class="ui-widget">
<div class="ui-widget-content">
</div>
</div>
然后这个jquery
<script>
$(function() {
$('#node').hover(function (){
$(this).toggleClass("ui-state-error");
});
});
</script>
我希望ui-state-error对嵌套div很重要。这是伪代码,但我发现大量的例子发生在容器有css交换和子(basicaly)忽略它的情况下。更糟糕的是:如果我想能够在jQuery中覆盖说“backgroundcolor = ui-state-error:background-color知道100%这一切都不会破碎,因为我不知道”这个背景必然是有关元素的重要背景。
这是一个案例http://jsfiddle.net/WCuYH/1/
的小提琴编辑我打算推荐这个问题已经结束,因为没有任何尝试答案,只是偏离了原帖的精华
答案 0 :(得分:15)
首先关闭!important
适用于CSS规则中的一个特定声明。它不适用于班级。所以,“不”你不能上课!important
。
第二关,!important
只是CSS特异性的一部分。您还可以使用其他方法使规则成为具有优先权的更具体的规则(例如在父链中引用id而不仅仅是类。当我编写CSS时,使用!important是我最后一个可能的选择 - 我更倾向于用其他特殊解决方案来解决覆盖。通常,如果你控制所有的CSS,这很容易避免使用!important
。如果你必须覆盖一些你无法控制的CSS,那么有时它很方便。
如果您的jQuery代码要在对象上切换一个类,那么您将必须制定CSS规则,以便添加/删除此类会导致正确的CSS声明具有优先权。为了帮助您进一步了解该部分,您需要向我们展示HTML和CSS的相关部分,以便我们就如何解决您的优先级/特异性问题提出建议。