用jQuery选择第一个“ n”项


217

使用Jquery,我只需要从页面中选择前“ n”个项目,例如前20个链接,而不用通常的方式选择所有这些

$("a")

听起来很简单,但是jQuery手册没有类似证据。

Answers:


378

您可能想读片子。您的代码将如下所示:

$("a").slice(0,20)

65
尽管该:lt(20)方法看起来更简洁,但是如果您要从一个大型结果集开始使用slice会更有效。不幸的是,当评估“:lt”和其他位置选择器时,jQuery会遍历整个集合,即使只是获取第一个元素也是如此。我在这里的博客上写了更多有关此内容的内容:spadgos.com/?p=51
nickf

1
谢谢,我要求的一个附带要求是关于表演,所以这对我来说是正确的答案。感谢其他人也指出了:lt选择器。
Omiod

3
@nickf提供的内容丰富的评论,但博客链接和图形链接似乎不起作用
Fractalf 2013年

1
抱歉,现在无法编辑-基本上,使用slice的速度要快得多。
尼克

92

使用lt伪选择器:

$("a:lt(n)")

这匹配第n个元素之前的元素(不包括第n个元素)。编号从0开始。


13
根据jQuery Docs,.slice在现代浏览器中速度更快。
布莱斯

1
我喜欢使用jQuery样式,比链接更优雅。
Fedir RYKHTIK

22

我在lt()文档的末尾发现了此注释:

附加说明:
因为:lt()是jQuery扩展,而不是CSS规范的一部分,所以使用:lt()的查询无法利用本机DOM querySelectorAll()方法提供的性能提升。为了在现代浏览器中获得更好的性能,请改用$(“ your-pure-css-selector”)。slice(0,index)。

因此,$("selector").slice(from, to)用于更好的性能。



7

.slice()并不总是更好。就我而言,在Chrome 36中使用jQuery 1.7时,.slice(0,20)失败,并显示以下错误:

RangeError:超出最大调用堆栈大小

我发现:lt(20)在这种情况下没有错误。我可能有成千上万个匹配元素。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.