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");

выполняет задание.