JQuery выдает ошибку, что element.find() не является функцией
Я написал небольшую JS для итерации через набор согласованных элементов и выполнения некоторых задач для каждого из них.
Вот код:
var eachProduct = $(".item");
eachProduct.each(function(index, element){
var eachProductContent = element.find(".product-meta").clone();
});
При консолидации журнала element
он выводит правильно и точные объекты. Зачем jquery выдавать эту ошибку?
Ответы
Ответ 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();