使用jQuery选择第一个"n"项

Omi*_*iod 212 jquery

使用Jquery,我需要从页面中选择第一个"n"项,例如前20个链接,而不是通常使用它们选择所有这些项目

$("a")
Run Code Online (Sandbox Code Playgroud)

听起来很简单,但jQuery手册没有这样的证据.

ist*_*ble 369

你可能想要读.您的代码看起来像这样:

$("a").slice(0,20)
Run Code Online (Sandbox Code Playgroud)

  • 虽然`:lt(20)`方法看起来更清晰,但如果你有一个大的结果集,那么使用slice会更有效率.不幸的是,当评估":lt"和其他位置选择器时,**jQuery循环遍历整个集合**,即使它只是获取第一个元素.我在我的博客上写了更多关于此的内容:http://spadgos.com/?p = 51 (64认同)
  • @nickf的信息性评论,但博客链接和图表链接似乎不起作用 (3认同)

kgi*_*kis 90

使用lt伪选择器:

$("a:lt(n)")
Run Code Online (Sandbox Code Playgroud)

这匹配第n个元素之前的元素(排除第n个元素).编号从0开始.

  • [根据jQuery文档](http://api.jquery.com/lt-selector/#notes-0),.slice在现代浏览器中更快. (13认同)

小智 22

我在lt()docs的末尾找到了这个注释:

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

所以$("selector").slice(from, to)用于更好的表现.


Kev*_*ynn 7

.slice()并不总是更好.在我的情况下,使用Chrome 36中的jQuery 1.7,.slice(0,20)失败并出现错误:

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

我发现:在这种情况下,lt(20)没有错误地工作.我可能有成千上万的匹配元素.