“所有但不是”jQuery 选择器

Posted

技术标签:

【中文标题】“所有但不是”jQuery 选择器【英文标题】:"All but not" jQuery selector 【发布时间】:2011-12-17 19:18:49 【问题描述】:

我可以选择(使用 jQuery)html 标记中的所有 div,如下所示:

$('div')

但我想从上述选择中排除特定的div(比如说有id="myid")。

如何使用 Jquery 函数做到这一点?

【问题讨论】:

在 jquery 中使用 not 选择器 【参考方案1】:

简单:

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

使用.not() 将从$('div') 返回的集合中删除与给定选择器匹配的元素。

您也可以使用:not() 选择器:

$('div:not(#myid)');

两个选择器做同样的事情,但是 :not() is faster,大概是因为 jQuery 的选择器引擎 Sizzle 可以将其优化为原生的 .querySelectorAll() 调用。

【讨论】:

@Raynos 我不认为它一定是,但使用.not():not()远远。跨度> 我认为应该是$('div:not(#myid)');(不带引号)。 @Raynos:为什么? :not() 是一个 CSS3 选择器。如果支持,jQuery 可以直接将选择器传递给querySelectorAll... @FelixKling 作为selectors4 的一部分很好。然而,在 jQuery 中,它比 .not 更慢并且可读性更差。我应该说“:不是 jQuery 中的选择器” @Raynos:没有选择器规范允许在:not() 中使用引号。这个选择器对于 Selectors 4 来说也不是新的,也没有被更改为允许引用。不过,它已被更改为允许更复杂的选择器。除非我误解了你的评论... @PeterKrauss 我刚刚做了a jsPerf benchmark,这标志着querySelectorAll 是最快的。不是一个真实世界的基准测试,但可以预期,因为 jQuery 内部没有开销。 :not() 实际上更快,大概是因为 Sizzle 知道它可以优化它以使用 querySelectorAll()【参考方案2】:
var els = toArray(document.getElementsByTagName("div"));
els.splice(els.indexOf(document.getElementById("someId"), 1);

你可以用老式的方式来做。这么简单的东西就不需要jQuery了。

专业提示:

一组dom元素只是一个数组,所以在NodeList上使用你最喜欢的toArray方法。

向集合中添加元素只是

set.push.apply(set, arrOfElements);

从集合中移除一个元素是

set.splice(set.indexOf(el), 1)

你不能轻易地一次删除多个元素:(

【讨论】:

现在(2017 年)也许使用原生 javascript .querySelector().querySelectorAll()div:not(#myid) 更快...是吗?【参考方案3】:
$("div:not(#myid)")

[doc]

$("div").not("#myid")

[doc]

是选择除一个 id 之外的所有内容的主要方法

你可以看到demo here

【讨论】:

今天(2017)也许$("div:not(#myid)") 更快...检查sizzlejs优化它,当使用原生Javascript .querySelector().querySelectorAll()时。跨度> 【参考方案4】:
   var elements =  $('div').not('#myid');

这将包括除 ID 为“myid”的所有 div

【讨论】:

【参考方案5】:
$('div:not(#myid)');

我认为这就是你需要的。

【讨论】:

【参考方案6】:

应该这样做:

$('div:not("#myid")')

【讨论】:

【参考方案7】:

您使用 jQuery 库的 .not 属性:

$('div').not('#myDiv').css('background-color', '#000000');

看到它在行动here。 div #myDiv 将是白色的。

【讨论】:

以上是关于“所有但不是”jQuery 选择器的主要内容,如果未能解决你的问题,请参考以下文章

jQuery选择器介绍:基本选择器层次选择器过滤选择器表单选择器

jquery标签选择器怎么循环

[ jquery 选择器 总览 ] jquery选择器总览

jquery选择器都有哪些

jQuery选择器

jQuery选择器概述