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