jQuery选择器不排除:不

时间:2013-09-26 03:13:36

标签: jquery

我正在尝试使用jquery选择器

"body *:not(.class)" 

将事件绑定到页面上除给定类之外的所有内容(请参阅http://jsfiddle.net/MMrRb/

当我这样做时,:not子句被忽略了。有人知道为什么吗?我破解它的唯一方法是单独的jquery子句来反转“*”所应用的内容

2 个答案:

答案 0 :(得分:5)

工作得很好。如果您在小提琴中检查DOM,您会发现.two元素的样式不是color: red。但是,您的ul会这样做。由于您的.two位于ul,因此它会继承颜色。

话虽如此,选择器中的*是不必要的。你可以删除它,它仍然会选择相同的元素。

答案 1 :(得分:0)

这是因为样式也应用于ul元素,twoul的子元素,因此css规则由元素继承

我的解决方案是将规则仅应用于叶节点,尝试以下解决方案

$(function() {
    $("body :not(.two):not(:has(*))").css("color", "red");
});

演示:Fiddle

注意:这将是非常昂贵的...所以,如果你得到任何其他解决方案,在成本分析后选择它