[英]How can I select elements that don't have any of several classes using jQuery?
我有一个页面,其中包含许多附加了相同类的元素:
<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
元素,它们没有任何“hide”类 - .hide1 .hide2 .hide3
。
我怎么能用jQuery做到这一点?
我试过以下但没有成功:
$("div.everyDiv").not(".hide1").not(".hide2").not(".hide3").slice(n1, n2);
$("div.everyDiv:not(.hide1):not(.hide2):not(.hide3)").slice(n1, n2);
这也不起作用:
$("div.everyDiv:not(.hide1), div.everyDiv:not(.hide2), div.everyDiv:not(.hide3)").slice(n1, n2);
基本上,所有“hide#”类都有CSS: display: none;
,所以我需要选择我没有“隐藏”的指定范围的div。
这应该这样做:
$('div.everyDiv:not(.hide1, .hide2, .hide3)').hide();
根据评论:使小提琴正在做的更明显:不是它为所有那些没有任何隐藏类的类添加了一个类。 http://jsfiddle.net/s9uyk/2/
$('div.everyDiv').not(".hide1, .hide2, .hide3")
有一个工作的Jsfiddle演示
这有效
$("div.everyDiv").not(".hide1, .hide2, .hide3")
它成功地选择了没有.hide1
, .hide2
, .hide3
。 在jsfiddle结帐我的例子。 它成功隐藏了与条件不匹配的元素,留下了不可见的元素。 在这种情况下,它留下1,2,3,4可见,因为它们具有.hide1
, .hide2
, .hide3
类。
$("div.everyDiv:not(.hide1), div.everyDiv:not(.hide2), div.everyDiv:not(.hide3)");
它似乎对我有用:
$("div.everyDiv").not(".hide1").not(".hide2").not(".hide3");
尝试
$("[class=class2]")
要么
$('.someclass[class="someclass"]')
我认为你的选择器很好 - 你只是没有做任何事情。 尝试这个:
$("div.everyDiv").not(".hide1").not(".hide2").not(".hide3").fadeOut(1000);
您还可以简化此选择器:
$("div.everyDiv").not(".hide1, .hide2, .hide3").fadeOut(1000);
你可以看到它在这里工作:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.