使用jQuery,我需要选择页面上的前n个元素,比如只选择前20个链接,而不是像通常一样选择所有的链接。
$("a")
听起来很简单,但是 jQuery 手册中没有类似这样的证据。
使用jQuery,我需要选择页面上的前n个元素,比如只选择前20个链接,而不是像通常一样选择所有的链接。
$("a")
听起来很简单,但是 jQuery 手册中没有类似这样的证据。
你可能想要了解slice。你的代码将看起来像这样:
$("a").slice(0,20)
$("a:lt(n)")
这将匹配第n个元素之前(不包括第n个元素)的所有元素。计数从0开始。
我在lt()文档的结尾发现了这个注释:
额外注释:
因为 :lt() 是 jQuery 的扩展,而不是 CSS 规范的一部分,使用 :lt() 的查询不能利用本机 DOM querySelectorAll() 方法提供的性能提升。为了在现代浏览器中获得更好的性能,请改用 $("your-pure-css-selector").slice(0, index)。
因此使用$("selector").slice(from, to)
可以获得更好的性能。
.slice()并不总是更好。在我的情况下,使用jQuery 1.7和Chrome 36,.slice(0,20)会出现错误:
RangeError:超出最大调用堆栈大小
我发现在这种情况下 :lt(20) 可以正常工作而没有错误。我可能有成千上万个匹配元素。