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

时间:2014-06-19 07:11:17

标签: javascript jquery

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

以下是代码:

var eachProduct = $(".item");

eachProduct.each(function(index, element){

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

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

4 个答案:

答案 0 :(得分:53)

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

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

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

答案 1 :(得分:7)

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

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

您可以将其包装在$()内,将其转换为jquery对象。为了避免这种差异,您只需使用$(this)引用而不是使用其他引用。

答案 2 :(得分:5)

你应该将“element”改为“this”:

var eachProduct = $(".item");

eachProduct.each(function(index, element){

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

答案 3 :(得分:4)

$(this)用于当前元素

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