有没有人知道缓存选择器返回的对象集合的好方法。
var $platforms = $(".platforms");
var i = 0, l = $platforms.length, current;
for(;i<l;i++) {
current = $($platforms[i]); //calling jQuery() in a loop. Should be cached
}
上面的代码创建了$(".platform")
在缓存时返回的每个元素的jQuery实例。有没有简单的方法呢?
答案 0 :(得分:2)
要从字面上获取元素的jQuery包装器数组,可以像这样使用.map()
:
var $platforms = $(".platforms").map(function() { return $(this); }).get();
然后在你的for
循环$platforms[i]
中将成为一个jQuery对象。
这取决于你所追求的,有.each()
这样:
$(".platforms").each(function(i,elem) {
var current = $(this);
});
或者使用.eq()
在循环中的索引处获取jQuery包装元素,如下所示:
for(;i<l;i++) {
current = $platforms.eq(1);
}
这一切都取决于你所追求的...... 为什么你在循环元素?大多数jQuery操作都是在集合上运行,而不是单个元素,因此例如$(".platforms").bind(...)
将绑定到选择器找到的元素的所有。