jQuery .each () не эквивалентно вызову метода непосредственно в селекторе? - PullRequest
1 голос
/ 29 октября 2009

У меня никогда не было этой проблемы раньше, поэтому я немного растерялся. Я получаю два разных результата, используя по существу один и тот же базовый код. Первый способ таков:

$(".myClassSelector").append(somejQueryObject);

Второй способ, который не работает одинаково:

$(".myClassSelector").each(function() { $(this).append(somejQueryObject) });

Второй пример только добавляет somejQueryObject к последнему найденному .myClassSelector.

Ответы [ 2 ]

5 голосов
/ 29 октября 2009

Я предполагаю, что при первом подходе jQuery внутренне клонирует объект jQuery для каждого из сопоставленных элементов селектора, в то время как со вторым он просто добавляет один и тот же объект (удаляя его из ранее добавленных элементов). Попробуйте это:

$(".myClassSelector").each(function() { $(this).append(somejQueryObject.clone()) });
0 голосов
/ 29 октября 2009

Когда вы используете append для объекта jQuery, он перемещает объект из его текущего местоположения в новое местоположение. Каждая итерация вашего цикла перемещает somejQueryObject к следующему элементу. clone() требуется, если вы хотите добавить копию к каждому элементу.

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