JQuery каждый элемент
Мне любопытно, почему этот код недействителен:
$.each( $("p") ).css("color", "green");
Хотя этот код работает нормально:
$.each($("p"), function() { $(this).css("color", "green") });
Невозможно ли связать элементы с каждым?
Ответы
Ответ 1
Удалите обертку:
$("p").css("color", "green");
Если вы хотите использовать $.each
, укажите функцию как второй аргумент:
$("p").each(function() {
//Or: $.each( $("p"), function() {
$(this).css("color", "green");
});
Метод jQuery автоматически возвращает экземпляр коллекции, поэтому цепочка должна быть по-прежнему возможна.
Демо: http://jsfiddle.net/pC2Bj/
См. также:
Ответ 2
$.each()
требуется функция в качестве второго аргумента. Вы передали только один аргумент.
http://api.jquery.com/jquery.each/
jQuery.each(сбор, обратный вызов (indexInArray, valueOfElement))
коллекция Объект или массив для перебора.
callback (indexInArray, valueOfElement). Функция, которая будет выполняться на каждом объекте.
Да, можно цепью, так как $.each
возвращает коллекцию, которую вы итерируете.
$.each($("p"), function() { $(this).css("color", "green") }).addClass('test');
Ответ 3
$.each
требуется два параметра, второй - обратный вызов, который выполняется один раз для каждого элемента. Если вы не передадите параметр обратного вызова, $.each
не будет работать.
Кроме того, $.each
возвращает объект, по которому он итерации, поэтому цепочка не работает, как при использовании методов, возвращающих объект jQuery.
Ответ 4
Обратите внимание, что для достижения желаемого эффекта (наиболее вероятно) не требуется версия each
.
$("p").css("color", "green");
выполняет задание.