我可以选择(使用jQuery)HTML标记中的所有div,如下所示:
$('div')
但我想从上述选择中排除特定的内容div
(例如具有id="myid"
)。
如何使用Jquery函数做到这一点?
Answers:
简单:
$('div').not('#myid');
使用.not()
会从返回的集合中移除与选择器匹配的元素$('div')
。
您还可以使用:not()
选择器:
$('div:not(#myid)');
两个选择器的功能相同,但是:not()
速度更快,这大概是因为jQuery的选择器引擎Sizzle可以将其优化为本地.querySelectorAll()
调用。
.not()
是远远不如:not()
。
$('div:not(#myid)');
(不含引号)。@Raynos:为什么?:not()
是CSS3选择器。jQuery可以直接将选择器传递给querySelectorAll
如果支持的话...
:not()
。该选择器不是选择器4的新增功能,也没有进行更改以允许使用引号。不过,已对其进行了更改,以允许使用更复杂的选择器。除非我误解了您的评论...
querySelectorAll
为最快。这不是一个现实的基准,但是可以预期,由于jQuery内部没有任何开销。:not()
实际上更快,大概是因为Sizzle知道它可以优化它的使用querySelectorAll()
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)
您不能一次轻松地删除多个元素:(
应该这样做:
$('div:not("#myid")')