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



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



$.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, но я все еще не понимаю разницы. (Это я или эта документация иногда немного "туманна" в ясности содержания?)



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



видимо, моя попытка универсального примеры сбивают с толку людей! Вместе с (ранее) отсутствующей скобкой в первом примере. : (



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



$.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();
});


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



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

464   8  

8 ответов:

описание:

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

примеры:

массив Javascript (или объект js) с помощью $.каждый():

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 с использованием .каждый()

$('#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

если вы ищете дополнительные примеры+детали, $.каждый против .каждый()

ресурсы

от http://api.jquery.com/jQuery.each:

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

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

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

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

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

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

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

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

должно быть:

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

см.:http://api.jquery.com/jQuery.each/

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

см.:http://api.jquery.com/each/

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

jQuery.каждый()

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

.каждый()

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

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

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

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

Comments

    Ничего не найдено.