“所有但不是”jQuery选择器

时间:2011-10-29 10:21:11

标签: javascript jquery jquery-selectors

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

$('div')

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

如何使用Jquery函数执行此操作?

7 个答案:

答案 0 :(得分:156)

简单:

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

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

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

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

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

答案 1 :(得分:9)

var els = toArray(document.getElementsByTagName("div"));
els.splice(els.indexOf(document.getElementById("someId"), 1);

你可以用老式的方式做到这一点。没有必要使用简单的jQuery。

专业提示:

一组dom元素只是一个数组,因此请在toArray上使用您最喜欢的NodeList方法。

向集合中添加元素只是

set.push.apply(set, arrOfElements);

从集合中删除元素是

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

您不能一次轻松删除多个元素:(

答案 2 :(得分:5)

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

[doc]

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

[doc]

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

您可以看到demo here

答案 3 :(得分:4)

   var elements =  $('div').not('#myid');

这将包括除id为'myid'

之外的所有div

答案 4 :(得分:3)

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

这就是我想要的。

答案 5 :(得分:3)

应该这样做:

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

答案 6 :(得分:3)

您使用jQuery库的.not属性:

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

在行动here中查看。 div #myDiv将是白色的。