查找的反义词

4
有没有.find()的相反方法?
如果想要选择所有带有.myclass类名的元素,但不包括#myid元素,可以使用以下代码:$('.myclass').not('#myid'); 在这个例子中,我知道可以使用$('.myclass[id=myid]'),但在其他情况下,使用上述方法会更加方便。
谢谢!
编辑:
感谢回复!看起来我只是没有在文档中看到.not()和:not()。

我认为,如果他们将.lose()的别名设置为.not(),那将非常棒。 - Vivin Paliath
8个回答

10

4
尝试使用.not()函数——它可以删除与选择器匹配的任何元素。

谢谢!我在 jQuery 文档中可能漏掉了那个。=/ - Ben

3
如果您想要一个单字符串选择器,请使用以下内容:
$('.myClass:not(#myid)')

这里使用了 :not() 伪类选择器,而非 .not() 过滤函数。

看起来这很反直觉,但是有时候这种单个选择器方法可能会更慢,因为通过类名获取元素(未经过滤)是经过优化的,在这种情况下每个元素都会被作为筛选条件进行过滤。

另一种选择,使用 .not() 可能会更快,具体取决于匹配 .myclass 的元素数量,因为通过 ID 查找元素是一个非常快的操作,所以将其从集合中排除比较快。


3

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


1

通用的

$('selector:not(selector)').doStuff()

具体的

$('.myclass:not(#myid)').doStuff() 

我相信这是正确的解决方案。

访问http://api.jquery.com/not-selector/以获取更多用例和示例。


1

我想你正在寻找not()


0

有的。您可以使用jQuery的:not选择器或.not()函数。示例代码:

$('.something').not('.else')
$('.something:not(.not-me):not(.neither-me)')

作为一个附带说明,CSS3有本地:not伪类

0
你们都错了。Not并不严格等同于Find,因为Not只会搜索当前元素而不是后代元素,而Find()则会遍历子孙后代来查找是否匹配某个条件。Find的相反操作应该使用.Not(:has(...))。

1
看起来原标题可能会误导人。请原谅我当时的经验不足。但如果您阅读文本的其余部分,您会发现我更具体地寻找与.filter()相反的功能。 - Ben

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接