如何使用jQuery选择没有任何类的元素?

时间:2011-06-20 15:31:33

标签: jquery jquery-selectors filter

我有一个页面,其中包含许多附加了相同类的元素:

<div class="everyDiv"></div>
<div class="everyDiv"></div>
<div class="everyDiv"></div>
<div class="everyDiv"></div>
...

我根据用户选择隐藏/显示它们的过滤器添加其他类:

<div class="everyDiv hide1"></div>
<div class="everyDiv hide2"></div>
<div class="everyDiv hide3"></div>
<div class="everyDiv hide2 hide3"></div>
...

现在,我需要选择不要具有任何“隐藏”分类的slice()元素的范围(使用.everyDiv) - {{1 }}

如何使用jQuery执行此操作?

我尝试了以下但没有成功:

.hide1 .hide2 .hide3

这也不起作用:

$("div.everyDiv").not(".hide1").not(".hide2").not(".hide3").slice(n1, n2);

$("div.everyDiv:not(.hide1):not(.hide2):not(.hide3)").slice(n1, n2);

基本上,所有“hide#”类都有$("div.everyDiv:not(.hide1), div.everyDiv:not(.hide2), div.everyDiv:not(.hide3)").slice(n1, n2); 的CSS,所以我需要选择不是“隐藏”的指定范围的div。

8 个答案:

答案 0 :(得分:13)

这应该这样做:

$('div.everyDiv:not(.hide1, .hide2, .hide3)').hide();

http://jsfiddle.net/s9uyk/

根据评论:让小提琴做得更明显: 不是它给所有那些没有任何隐藏类的类添加了一个类。 http://jsfiddle.net/s9uyk/2/

答案 1 :(得分:2)

$('div.everyDiv').not(".hide1, .hide2, .hide3")

有效Jsfiddle demo

答案 2 :(得分:1)

这有效

$("div.everyDiv").not(".hide1, .hide2, .hide3")

成功选择了没有.hide1.hide2.hide3的元素。在jsfiddle结帐我的示例。它成功隐藏了与条件不匹配的元素,留下了不可见的元素。在这种情况下,它留下1,2,3,4可见,因为它们有.hide1.hide2.hide3类。

答案 3 :(得分:0)

$("div.everyDiv:not(.hide1), div.everyDiv:not(.hide2), div.everyDiv:not(.hide3)");

答案 4 :(得分:0)

这似乎对我有用:

http://jsfiddle.net/maniator/mTkNL/

答案 5 :(得分:0)

$("div.everyDiv").not(".hide1").not(".hide2").not(".hide3");

答案 6 :(得分:0)

尝试

$("[class=class2]")

$('.someclass[class="someclass"]')

答案 7 :(得分:0)

我认为你的选择器很好 - 你只是没有做任何事情。试试这个:

$("div.everyDiv").not(".hide1").not(".hide2").not(".hide3").fadeOut(1000);

您还可以简化此选择器:

$("div.everyDiv").not(".hide1, .hide2, .hide3").fadeOut(1000);

你可以看到它在这里工作:

http://jsfiddle.net/nS4jC/1/