JQuery Collection Cache - PullRequest
       5

JQuery Collection Cache

1 голос
/ 25 октября 2010

Кто-нибудь знает хороший способ кэширования коллекции объектов, возвращаемых селектором.

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
}

Приведенный выше код создает экземпляр jQuery каждого элемента, возвращаемого $(".platform"), когда он должен быть кэширован.Есть ли простой способ сделать это?

1 Ответ

2 голосов
/ 25 октября 2010

Чтобы буквально получить массив оберток элементов 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(...) будет связывать с всеми элементами, найденными селектором.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...