与.find()相反吗?
$('.myclass').except('#myid');
除了带有#myid的元素外,将使用.myclass获取所有元素。
我知道在这个例子中我可以做$('.myclass[id=myid]')
,但在其他情况下似乎会有所帮助。
由于
编辑:
感谢您的回复!看起来我只是错过了在文档中看到.not()
和:not()
。
答案 0 :(得分:10)
$('.myclass').not('#myid');
答案 1 :(得分:4)
尝试.not()
- 它会删除与选择器匹配的所有元素。
答案 2 :(得分:3)
$('.myclass').not('#myid')
答案 3 :(得分:3)
如果你想要一个字符串选择器,那么使用它:
$('.myClass:not(#myid)')
这使用:not()
pseudo-class selector而不是.not()
过滤器功能。
这似乎是违反直觉的,但是这种单选择器方法有时可能会更慢,因为通过类(没有过滤)获取元素是优化的,它会在这种情况下过滤每个选择器。
替代方案,使用.not()
可能会更快,具体取决于匹配.myclass
的元素数量,因为按ID查找元素是非常快速操作,因此不包括它的设置相当快。
答案 4 :(得分:1)
通用
$('selector:not(selector)').doStuff()
具体
$('.myclass:not(#myid)').doStuff()
我认为是正确的解决方案。
访问http://api.jquery.com/not-selector/
了解更多用例和示例。
答案 5 :(得分:1)
我认为你正在寻找not()
答案 6 :(得分:0)
是的。您可以使用jQuery的:not
选择器或.not()
函数。示例代码:
$('.something').not('.else')
$('.something:not(.not-me):not(.neither-me)')
作为旁注,CSS3有native :not
pseudo-class。
答案 7 :(得分:0)
你错了。并不是严格地与Find相反,因为不仅搜索当前元素而不搜索后代,而Find()将搜索后代以查看某个条件是否匹配。与Find相反的是.Not(:has(...))。