<div class="fuu"> ... </div> <div class="fuu no"> ... </div> ...
如何选择所有fuu,除了那些带有.no类的元素?
fuu
.no
:not()
$('.fuu:not(.no)')
.fuu:not(.no)
querySelectorAll()
$("#mydiv .fuu:not(.no)").click(function(){console.log('test');});
not()
active
$("#mydiv").on('click', '.fuu:not(.no)', function(){console.log('test');});
$('.aaa:not(.bbb):not(.ccc)')
aaa
bbb
ccc
您也可以使用类似以下内容来过滤掉 '.no' 类:
$('.fuu').not('.no');
我在添加了另一组引号后才使第一个答案能够正常工作,这使我得到了所需的结果,即选择排除第二个类的类。
$(".fuu:not('.no')").hide();
<div class="fuu yes">
no
.attr('class') == 'fuu'
.fuu:not(.no)
也是一个有效的CSS3选择器,在支持:not()
的浏览器上将匹配相同的元素。因此,我相信jQuery会将这个选择器交给querySelectorAll()
处理,而不是在这些浏览器上依赖于Sizzle,从而提高这些浏览器的性能。当然,也没人会关心这个 :) - BoltClock$("#mydiv .fuu:not(.no)").click(function(){console.log('test');});
。我花了很长时间搜索与not()
相关的问题,最终发现问题在于active
类是动态添加的。我必须像这样做:$("#mydiv").on('click', '.fuu:not(.no)', function(){console.log('test');});
。由于我一直在这里挖掘,认为not()
不起作用,我想在此处留下评论,以帮助其他人。 - fpierrat$('.aaa:not(.bbb):not(.ccc)')
。这将获取所有具有类aaa
但不具有类bbb
或ccc
的内容。 - Kip