В чем разница между $.каждый (селектор) и $(селектор).каждый()
в чем разница между этим:
$.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();
});
Я понимаю, что они делают разные вещи, но не до такой степени, чтобы я мог сказать: "мне нужно использовать $.каждый() в данном случае и.каждый(функция() {}) в другом случае.
они вообще взаимозаменяемы? Только в некоторых случаях? Никогда?
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если вы ищете дополнительные примеры+детали, $.каждый против .каждый()
ресурсы
jQuery.each($.each) doc:https://api.jquery.com/jquery.each/.eachdoc:http://api.jquery.com/each/- jQuery для перебора элементов с одинаковым классом
от 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/
второй запускает функцию для каждого элемента коллекции, на котором вы ее запускаете.
в первом случае вы можете перебирать объекты jQuery, а также другие элементы массива, как указано здесь:
во втором случае вы можете только itterate над объектами jQuery, как указано здесь:
из того, что я понимаю
$.each();циклы через объект или массив и дает вам итератор и значение каждого элемента.
$().each();перебирает список объектов jQuery и дает вам итератор и объект jQuery.
взято из http://api.jquery.com/jQuery.each/
The
$.each()функция не то же самое, что.each(), который используется исключительно для итерации по объекту jQuery. Элемент$.each()функция может использоваться для итерации по любой коллекции, будь то карта (объект JavaScript) или массив. В случае массива, обратный вызов передается индекс массива и соответствующее значение массива каждый раз. (Значение также можно получить с помощью ключевого слова this, но Javascript всегда будет обертывать это значение как объект, даже если это простое строковое или числовое значение.) Метод возвращает свой первый аргумент, объект, который был повторен.
Comments