jQuery删除除了具有特定ID的类元素

时间:2009-09-30 08:45:34

标签: jquery css-selectors hide

我需要hide() '.dd-container'的所有班级元素,除非该元素的id'#tools'

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

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

3 个答案:

答案 0 :(得分: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,然后全部通过它们......我想。

答案 1 :(得分:1)

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

(注意'#tools'之后空格不足) 或

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

(由于ID是唯一的,你可以省略'not'选择器的类说明符)

答案 2 :(得分:0)

#tools .dd-container

#tools和.dd-container之间有一个空白 这意味着#tools的所有孩子都使用类.dd-container e.g。

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

所以#tools.dd-container应该可行,但是peirix的答案更容易理解。