.find()的相反

时间:2010-04-26 22:21:14

标签: javascript jquery jquery-selectors

与.find()相反吗?

$('.myclass').except('#myid');

除了带有#myid的元素外,将使用.myclass获取所有元素。 我知道在这个例子中我可以做$('.myclass[id=myid]'),但在其他情况下似乎会有所帮助。

由于

编辑:

感谢您的回复!看起来我只是错过了在文档中看到.not():not()

8 个答案:

答案 0 :(得分:10)

$('.myclass').not('#myid');

http://api.jquery.com/not/

答案 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(...))。