Подтвердить что ты не робот

JQuery выдает ошибку, что element.find() не является функцией

Я написал небольшую JS для итерации через набор согласованных элементов и выполнения некоторых задач для каждого из них.

Вот код:

var eachProduct = $(".item");

eachProduct.each(function(index, element){

                var eachProductContent = element.find(".product-meta").clone();
});

При консолидации журнала element он выводит правильно и точные объекты. Зачем jquery выдавать эту ошибку?

4b9b3361

Ответ 1

потому что element является элементом dom, а не объектом jQuery

var eachProductContent = $(element).find(".product-meta").clone();

Внутри обработчика each() вы получите ссылку на элемент dom как второй параметр, а не ссылку на объект jQuery. Поэтому, если вы хотите получить доступ к каким-либо методам jQuery в элементе, вам необходимо получить элементы оболочки jQuery.

Ответ 2

Вы вызываете .find() на простой JS-объект, но эта функция принадлежит объекту JQuery

 var eachProductContent = $(element).find(".product-meta").clone();

Вы можете преобразовать его в объект jquery, обернув его внутри $(). И чтобы избежать такого рода расхождений, вы можете просто использовать ссылку $(this) вместо использования других.

Ответ 3

вы должны изменить "элемент" на "this":

var eachProduct = $(".item");

eachProduct.each(function(index, element){

                var eachProductContent = $(this).find(".product-meta").clone();
});

Ответ 4

Используйте $(this) для текущего элемента

var eachProductContent = $(this).find(".product-meta").clone();