jQuery Each () как оператор For? - PullRequest
       11

jQuery Each () как оператор For?

4 голосов
/ 14 августа 2011

У меня есть функция jQuery.each (), которую я хотел бы превратить в оператор FOR.

Мне было интересно, как я могу повернуть

     jQuery('.myclass').each(function() {
       //do stuff
     }

в

   for ( var i=0; i<.myclass.length; i++) {
    //do stuff
   }

Ответы [ 2 ]

5 голосов
/ 14 августа 2011

jQuery объекты похожи на массивы. У них есть свойство length, и они поддерживают доступ к элементам, используя числовые индексы с []. Таким образом, вы просто индексируете непосредственно в получившийся объект:

var myclass = jQuery('.myclass');

for ( var i=0; i<myclass.length; i++) {
    // use myclass[i] here
}

Эта информация не особо отмечена в документации API, но вы можете найти ее в документации по функции get . Скобочная нотация в значительной степени заменяет использование функции get, за исключением обработки ее отрицательных значений индекса (которые используются для индексации относительно конца коллекции; отрицательные индексы поддерживаются только через get, а не через []) .

3 голосов
/ 14 августа 2011

Вы можете использовать .get(), чтобы получить стандартный массив JavaScript. А затем используйте цикл for обычным способом.

var nodes = $(...).get(),
    nodes_len = nodes.length;

for(var i=0; i < nodes_len; i++) {
   var node = nodes[i];

   ...
}

Или, если вам нужен только номер индекса, используйте следующее:

$(...).each(function (index) {
   ... 
});
...