Javascript jQuery抛出一个错误,即元素.find()不是函数

Javascript jQuery抛出一个错误,即元素.find()不是函数,javascript,jquery,Javascript,Jquery,我编写了一个小JS来迭代一组匹配的元素,并对每个元素执行一些任务 代码如下: var eachProduct = $(".item"); eachProduct.each(function(index, element){ var eachProductContent = element.find(".product-meta").clone(); }); 当我控制台记录元素时,它会正确输出准确的对象。为什么jquery要抛出此错误?因为元素是dom元素而不

我编写了一个小JS来迭代一组匹配的元素,并对每个元素执行一些任务

代码如下:

var eachProduct = $(".item");

eachProduct.each(function(index, element){

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

当我控制台记录
元素
时,它会正确输出准确的对象。为什么jquery要抛出此错误?

因为
元素
是dom元素而不是jquery对象

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

each()
处理程序中,您将获得dom元素引用作为第二个参数,而不是jQuery对象引用。因此,如果您想访问元素上的任何jQuery方法,则需要获取元素jQuery包装对象。

您正在对普通JS对象调用
.find()
,但该函数属于jQuery对象

var eachProductContent = $(element).find(".product-meta").clone();
 var eachProductContent = $(element).find(".product-meta").clone();
您可以将其包装在
$()
中,将其转换为jquery对象。为了避免这种差异,您可以简单地使用
$(this)
引用而不是使用其他引用。

您应该将“element”更改为“this”:

对当前元素使用
$(this)

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

但是如果我需要在
每一个
内部处理
每一个
产品该怎么办?@EgoPingvina您可以简单地使用
$(this)
元素
的istead。