如果$('body>div:lt(2)')
已分配给变量,我们可以使用DIV
获取body
中的前2个body>div
:
var s = $('body>div')
我们仍然可以使用伪选择器或其他方法来获取对变量的第一个2 DIV
s吗?当然,s:lt(2)不会工作。我能想到的是$(s.slice(0,2))
,但还有更好的方法吗?
答案 0 :(得分:5)
您可以使用jQuery的.filter()
方法,该方法允许使用选择器参数来过滤jQuery对象中的选定节点。
var filtered = s.filter(':lt(2)');
请注意,这不会修改s
的原始值,因此您将拥有div
中的所有s
,以及已过滤的div
filtered
。
或者,正如您已经说过并已在评论中讨论过,您可以使用Array.prototype.slice
。
var sliced = $(s.slice(0,2));
这在技术上比.filter()
执行得更快。但是,它也可能使您的代码不易读/理解。除非您在很短的时间内执行此操作数千次或更多次,否则性能增益也可能极其微不足道。
可读性与性能是一场经常在编程中进行的战斗,最终你是唯一一个能够决定哪一个胜出自己代码的人。