如果已经将body>div
指定为一个变量,我们可以使用$('body>div:lt(2)')
来获取在body
中的前两个DIV
标签。
var s = $('body>div')
我们还可以使用伪选择器或其他方法来获取前两个 DIV
,以便参考变量吗?当然,s:lt(2)
不起作用。我能想到的是 $(s.slice(0,2))
,但有没有更好的方法呢?
如果已经将body>div
指定为一个变量,我们可以使用$('body>div:lt(2)')
来获取在body
中的前两个DIV
标签。
var s = $('body>div')
我们还可以使用伪选择器或其他方法来获取前两个 DIV
,以便参考变量吗?当然,s:lt(2)
不起作用。我能想到的是 $(s.slice(0,2))
,但有没有更好的方法呢?
.filter()
方法,该方法允许使用选择器参数来过滤jQuery对象中选定的节点,以及其他功能。var filtered = s.filter(':lt(2)');
s
的原始值,因此您将在s
中拥有所有的div
,并在filtered
中拥有您筛选出来的div
。
或者,正如你已经提到并在评论中讨论过的那样,你可以使用Array.prototype.slice
。
var sliced = $(s.slice(0,2));
.filter()
更快。然而,它可能会降低代码的可读性/可理解性。性能提升也很小,除非你在很短的时间内执行此操作数千次或更多。
slice()
更好,因为您可以依赖本地JS功能。 - AlexLslice
不太易读。更好并不一定意味着更高的性能。这也满足了 OP 使用伪选择器的愿望。 - ajp15243