说我有以下HTML:
<p class="link"><a href="#">This is a link.</a></p>
<p class="link"><a href="#">This is another link.</a></p>
<p class="link current"><a href="#">This is yet another link.</a></p>
<p class="link"><a href="#">This is still another link.</a></p>
我想使用jQuery的$.each()
函数来遍历类link
的所有对象,但我想跳过也有类current
的对象。我该怎么做?
我可以像这样检查每个循环中是否存在类:
$('.link').each(function() {
if (!$(this).hasClass('current'))
$(this).fadeOut();
})
...但有没有办法在jQuery中指定“class x,而不是class y”,不需要if条件?
答案 0 :(得分:13)
使用:not() selector排除元素:
$('.link:not(.current)').fadeOut();
答案 1 :(得分:3)
你可以filter
你的初始jQuery对象:
$('.link').filter(function() {
return !$(this).hasClass('current');
}).fadeOut();
答案 2 :(得分:1)
$('.link').each(function() {
if ($(this).attr('class')!="link current")
$(this).fadeOut();
})
答案 3 :(得分:0)
正如Guffa建议的那样,你可以使用:not()
CSS伪选择器。要将其用于.each()
函数,您可以执行以下操作(请参阅this jsfiddle作为证据):
jQuery(".link:not(.current)").each(function(index, element){
jQuery(element).fadeOut();
});
它是否符合您的需求?