0

我正在尝试使用 jquery 选择器

"body *:not(.class)" 

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

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

4

2 回答 2

5

它工作得很好。如果您检查小提琴中的 DOM,您将看到您的.two元素没有color: red. 但是,你的ul。因为你.two在你的ul里面,所以它继承了颜色。

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

于 2013-09-26T03:17:29.693 回答
0

这是因为样式也应用于ul元素,并且two是的子元素ul所以css规则被元素继承

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

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

演示:小提琴

注意:这将是非常昂贵的......因此,如果您在成本分析后获得任何其他解决方案,请选择它

于 2013-09-26T03:19:05.407 回答