В чем разница между $.each(селектором) и $(селектором).each()

В чем разница между этим:

$.each($('#myTable input[name="deleteItem[]"]:checked').do_something());

и это:

$('#myTable input[name="deleteItem[]"]:checked').each(function() { do_something });

html для ячейки таблицы, которая выбирается и действует, выглядит следующим образом:

<td width="20px"><input type="checkbox" class="chkDeleteItem" name="deleteItem[]" value="' . $rowItem['itemID'] . '" /></td>

Я просмотрел документацию jQuery, но я до сих пор не понимаю разницы. (Это я или эта документация иногда слегка "туманная" в ясности содержания?)

Добавлена ​​информация:

По-видимому, моя попытка типичных примеров путает людей! Наряду с (ранее) отсутствующими скобками в первом примере.: (

Первый пример исходит из строки в моем коде, которая удаляет <tbody> для любых строк с отмеченным флажком:

$.each($('#classesTable input[name="deleteClasses[]"]:checked').parent().parent().parent().remove());

Второй пример исходит из ситуации, когда я просматриваю #classesTable для всех отмеченных флажков и удаляю соответствующий элемент в раскрывающемся списке.

$('#classesTable input[name="deleteClasses[]"]:checked').each(function(){
    $('#classesList option[value="' + $(this).attr('value') + '"]').remove();
});

Я понимаю, что они делают две разные вещи, но не настолько, что я могу сказать: "Мне нужно использовать $.each() в этом случае и .each(function() {}) в другом случай.

Являются ли они взаимозаменяемыми вообще? Только в некоторых случаях? Никогда?

Ответ 1

Описание:

.each - это итератор, который используется для итерации только по jQuery объектов jQuery.each ($.each) является общим функция для итерации над объектами и массивами javascript.

<сильные > Примеры:

Javascript Array (или объект js) с использованием $.each():

var myArray = [10,20,30];

jQuery.each( myArray, function(index, value) {
   console.log('element at index ' + index + ' is ' + value);
});

//Output
element at index 0 is 10
element at index 1 is 20
element at index 2 is 30

объекты jQuery с использованием .each()

$('#dv').children().each(function(index, element) {
    console.log('element at index ' + index + 'is ' + (this.tagName));
    console.log('current element as dom object:' + element);
    console.log('current element as jQuery object:' + $(this));
});

//Output
element at index 0 is input
element at index 1 is p
element at index 2 is span

Если вы ищете дополнительные примеры + подробности, $. each vs .each()

Ресурсы

Ответ 2

из http://api.jquery.com/jQuery.each:

Функция $.each() не то же самое как .each(), который используется для итерации, исключительно, над объектом jQuery. Функция $.each() может использоваться для перебирать любую коллекцию, независимо от того, это карта (объект JavaScript) или массив.

Ответ 3

Вы действительно хотите использовать $.each с массивом, который не является элементом или чем-то еще. т.е.:

var x = ["test", "test2"];

Вы использовали бы $.each(x..., чтобы пересечь это вместо x.each:)

.each для элементов только:)

Ответ 4

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

Это должно быть:

$.each($('#myTable input[name="deleteItem[]"]:checked'), do_something);

Смотрите: http://api.jquery.com/jQuery.each/

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

Смотрите: http://api.jquery.com/each/

Ответ 5

Функциональной разницы нет. Каждому объекту jQuery принадлежит метод .each(), унаследованный от jQuery.fn. Вызывая это object method, jQuery уже знает, для чего Array (-like object) перебирать. Другими словами, он перемещается по indexed propertys из текущего объекта jQuery.

$.each() С другой стороны, это всего лишь "вспомогательный инструмент", который перебирает любые типы Array или Object, но, конечно же, вы должны сказать, какой метод вы хотите итерации. Он также позаботится о вас, передаете ли вы в массиве или объекте, он делает правильную вещь, используя for-in или for loop под капотом.

Ответ 6

Взято из http://api.jquery.com/jQuery.each/

Функция $.each() не совпадает с .each(), которая используется для итерации исключительно над объектом jQuery. Функция $.each() может использоваться для итерации по любой коллекции, будь то карта (объект JavaScript) или массив. В случае массива обратный вызов каждый раз передается индексом массива и соответствующим значением массива. (Доступ к этому значению также можно получить через это ключевое слово, но Javascript всегда будет переносить это значение как объект, даже если это простая строка или числовое значение.) Метод возвращает свой первый аргумент, объект, который был итерирован.

Ответ 7

В первом случае вы можете перебирать объекты jQuery, а также другие элементы массива, как указано здесь:

jQuery.each()

Во втором случае вы можете только повторять объекты jQuery, как указано здесь:

. each()

Ответ 8

Из того, что я понимаю $.each();, проходит через объект или массив и дает вам итератор и значение каждого элемента.

$().each(); перебирает список объектов jQuery и дает вам итератор и объект jQuery.