jQuery Collection Cache

时间:2010-10-25 09:19:06

标签: jquery optimization collections caching

有没有人知道缓存选择器返回的对象集合的好方法。

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实例。有没有简单的方法呢?

1 个答案:

答案 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(...)将绑定到选择器找到的元素的所有