$ .each ([набор]) по сравнению с $ ([набор]) .each ()

Оба метода, кажется, приводят к тем же результатам, но мне было трудно на самом деле убеждать людей, что второй метод работает, так как он не, по-видимому, обычно известен.

// Create some data
var foo = { 'vals':[ {'id':'foo'}, {'id':'bar'} ] }​​​​​​​​​​​​​​​​​;

// Common Method    
$.each(foo.vals, function(i,o){
    alert(this.id);
});

// Alternative (lesser-known?) Method
$(foo.vals).each(function(i,o){
   alert(this.id); 
});

После проверки источника эти два, кажется, one-in-the-same. Второй метод следует:

each: function( callback, args ) {
  return jQuery.each( this, callback, args );
}

Этот метод очевидно называет более обычно известный метод, означая, что это столь же законно. Это понимает корректный, или я пропускаю что-то здесь?

Я обычно доверял этому методу, так как он не заставил меня отклоняться от общепринятой практики относительно селекторов. Давайте столкнемся с ним, мы обучены сделать:

$("p").each();

Таким образом, кажется только естественным сделать:

$(obj).each();

Действительно ли я ошибаюсь?

9
задан Sampson 23 February 2010 в 20:36
поделиться

2 ответа

Разница между ними на самом деле экспоненциальная, в зависимости от того, как вы их используете.

Первый $.each представляет собой единственный вызов функции для запуска итератора.

Второй $(foo.vals).each делает три вызова функции для запуска итератора. Первый - $(), который создает новый набор оберток jQuery (не уверен, сколько еще вызовов функций происходит во время этого процесса). Затем вызов $().each. И, наконец, выполняется внутренний вызов jQuery.each для запуска итератора.

В вашем примере разница будет, мягко говоря, незначительной. Однако во вложенном сценарии использования вы можете обнаружить, что производительность становится проблемой.

Наконец, Коди Линдли в книге jQuery Enlightenment не рекомендует использовать $.each для итераций больше 1000 из-за вызовов функций. Используйте обычный for( var i = 0... цикл.

12
ответ дан 4 December 2019 в 14:28
поделиться

Я не уверен, что все остальные говорят... но я почти исключительно использую ваш второй метод.

Будучи выходцем из страны .NET... для меня это просто имеет больше смысла и облегчает чтение.

2
ответ дан 4 December 2019 в 14:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: