Объект jQuery является оберткой вокруг массива элементов DOM. Таким образом, «массив jQuery» - это объект jQuery. Объект содержит каждый элемент на странице, который соответствует селектору. Большинство методов, которые вы вызываете для объекта jQuery, неявно прокручивают все элементы массива и применяются ко всем из них.
или если он только что получил много терпимости встроено в каждую из своих функций позволяют либо один элемент или коллекцию элементов.
Это своего рода случай. На самом деле каждый метод работает с одним элементом, но jQuery вызывает его столько раз, сколько у него есть объекты для работы. Я считаю, что это действительно использует .each()
для этого, поэтому, если вы понимаете, как работает .each()
, вы понимаете, как работает неявный цикл jQuery.
Некоторые методы не применяются ко всем объектам в коллекции, но те, которые не говорят об этом в своей документации. Исключениями являются методы, которые не имеют смысла применять к каждому элементу. Например, если вы вызываете $('.blah').innerHeight()
, вы получите высоту первого элемента в объекте jQuery, возвращаемом $('.blah.')
.
Существуют также методы, позволяющие получать и устанавливать атрибуты. Когда они возвращают значение из первого элемента, а при настройке они применяются ко всем согласованным элементам.Например, если вы звоните $('.blah').css('font-size')
вы получите размер от первого элемента в коллекции, но если вы звоните $('.blah').css('width', 100)
вы установите стиль ширина каждый элемента в коллекции JQuery.
Обратите внимание, что на самом деле вы можете рассматривать объект jQuery как массив. Просто используйте нотацию массива для доступа к элементу.
$jQ_obj = $('.classy').find('.refined');
element = $jQ_obj[3];
Это будет хранить четвертый элемент на странице, которая имеет класс refined
и является дочерним элементом, который имеет classy
. Результирующий объект в element
является необработанным объектом DOM.
Второй момент,
Поскольку ответ, который упомянул об этом был удален, убедитесь, что вы понимаете, как .each()
работы. Вам нужно передать ему функцию, которую вы хотите применить к каждому согласованному элементу, точно так же, как обработчик события. Так оно и должно быть:
jQuery('.someclass').each(function(i) { //don't forget the dot!
$(this).click(function() {
alert("I've been clicked!");
});
});
Внутри обратного вызова, чтобы .each()
this
ключевое слово относится к текущему элементу DOM будучи петельные через и Arg передается функции обратного вызова является индекс цикла. this
является сырым элементом DOM (подумайте, что он пишет $('.someclass')[i]
), поэтому вам нужно создать из него объект jQuery, чтобы позвонить на него .click()
.
примечание, чтобы увидеть, какой элемент вы выбрали вы можете использовать ... функцию (MyEvent) { предупреждение (myevent.target.nodeName); }); –
Только первое правильно. Второй не будет работать вообще. Кроме того, если вы хотите выбрать элемент по имени класса, вам нужно использовать '.someclass' (начинается с периода) вместо' someclass'. – user113716
Да, «someclass» без ведущего периода фактически ищет элемент html, называемый ''. –
jasongetsdown