我正在尝试使用jquery选择器
"body *:not(.class)"
将事件绑定到页面上除给定类之外的所有内容(请参阅http://jsfiddle.net/MMrRb/)
当我这样做时,:not子句被忽略了。有人知道为什么吗?我破解它的唯一方法是单独的jquery子句来反转“*”所应用的内容
答案 0 :(得分:5)
工作得很好。如果您在小提琴中检查DOM,您会发现.two
元素的样式不是color: red
。但是,您的ul
会这样做。由于您的.two
位于ul
,因此它会继承颜色。
话虽如此,选择器中的*
是不必要的。你可以删除它,它仍然会选择相同的元素。
答案 1 :(得分:0)
这是因为样式也应用于ul
元素,two
是ul
的子元素,因此css规则由元素继承
我的解决方案是将规则仅应用于叶节点,尝试以下解决方案
$(function() {
$("body :not(.two):not(:has(*))").css("color", "red");
});
演示:Fiddle
注意:这将是非常昂贵的...所以,如果你得到任何其他解决方案,在成本分析后选择它