jQuery抛出一个错误,认为element.find()不是一个函数

jQuery throws an error that element.find() is not a function

本文关键字:一个 find 函数 element 认为 jQuery 错误      更新时间:2023-09-26

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

代码如下:

var eachProduct = $(".item");
eachProduct.each(function(index, element){
                var eachProductContent = element.find(".product-meta").clone();
});

当我控制台日志element时,它输出正确和准确的对象。为什么jquery会抛出这个错误?

因为element是一个dom元素而不是一个jQuery对象

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

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

你在一个普通JS对象上调用.find(),但该函数属于Jquery对象

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

您可以将其转换为一个jquery对象,通过将其包装在$()中。为了避免这种差异,您可以简单地使用$(this)引用而不是使用其他。

为当前元素使用$(this)

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

你应该把"element"改成"this":

var eachProduct = $(".item");
eachProduct.each(function(index, element){
                var eachProductContent = $(this).find(".product-meta").clone();
});