我们如何将伪选择器应用于jQuery DOM变量?

时间:2015-02-25 19:22:37

标签: jquery

如果$('body>div:lt(2)')已分配给变量,我们可以使用DIV获取body中的前2个body>div

var s = $('body>div')

我们仍然可以使用伪选择器或其他方法来获取对变量的第一个2 DIV s吗?当然,s:lt(2)不会工作。我能想到的是$(s.slice(0,2)),但还有更好的方法吗?

1 个答案:

答案 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()执行得更快。但是,它也可能使您的代码不易读/理解。除非您在很短的时间内执行此操作数千次或更多次,否则性能增益也可能极其微不足道。

可读性与性能是一场经常在编程中进行的战斗,最终你是唯一一个能够决定哪一个胜出自己代码的人。