Мне любопытно, почему этот код недействителен:
$.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");
выполняет задание.