1

我需要hide()所有类级别的元素,'.dd-container'除非该元素具有idof '#tools'

我尝试了以下(不起作用),但我很确定我捏造了语法:

$('div:has(.dd-container):not(#tools .dd-container)').hide();
4

3 回答 3

3

我认为这应该有效:

$("div:not(#tools)").find(".dd-container").hide();

编辑:认为我误读了这个问题。有没有一个dd-container类也有一个id工具?如果是这样,那么您需要将其更改为:

$("div").find(".dd-container:not(#tools)").hide();

或者这个:(根据我不久前做的一些测试,它应该执行得更快)

$(".dd-container:not(#tools)", "div").hide();

它更快的原因是因为它首先寻找类,而不是寻找所有的div,然后遍历它们……我想。

于 2009-09-30T08:50:02.207 回答
1
$('div:has(.dd-container):not(#tools.dd-container)').hide();

(注意“#tools”后没有空格)或

$('div:has(.dd-container):not(#tools)').hide();

(由于 id 是唯一的,您可能可以省去 'not' 选择器的类说明符)

于 2009-09-30T08:52:13.310 回答
0
#tools .dd-container

#tools 和 .dd-container 之间有一个空格,这意味着 #tools 的所有子级具有 .dd-container 类,例如

<table id="tools"><tr class='dd-container'>

所以 #tools.dd-container 应该可以工作,但是 peirix 的答案更容易阅读。

于 2009-09-30T08:51:46.620 回答