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

Mos*_*ebi 38 javascript jquery

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

这是代码:

var eachProduct = $(".item");

eachProduct.each(function(index, element){

                var eachProductContent = element.find(".product-meta").clone();
});
Run Code Online (Sandbox Code Playgroud)

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

Aru*_*hny 56

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

var eachProductContent = $(element).find(".product-meta").clone();
Run Code Online (Sandbox Code Playgroud)

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


Raj*_*amy 7

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

 var eachProductContent = $(element).find(".product-meta").clone();
Run Code Online (Sandbox Code Playgroud)

您可以将其包装在内部,将其转换为jquery对象$().并且为了避免这种差异,您可以简单地使用$(this)引用而不是使用其他.


Ami*_*ari 5

你应该将"element"改为"this":

var eachProduct = $(".item");

eachProduct.each(function(index, element){

                var eachProductContent = $(this).find(".product-meta").clone();
});
Run Code Online (Sandbox Code Playgroud)


Sud*_*n S 5

使用$(this)当前元素

var eachProductContent = $(this).find(".product-meta").clone();
Run Code Online (Sandbox Code Playgroud)