2014-06-19 14 views
25

Bir dizi eşleştirilen eleman üzerinden yinelemek ve bunların her birinde bir görev yapmak için küçük bir JS yazdım. Ben element log teselli zamanjQuery, element.find() fonksiyonunun bir fonksiyon olmadığı bir hata atar

var eachProduct = $(".item"); 

eachProduct.each(function(index, element){ 

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

düzgün verir ve kesin nesneler: Burada

kodudur. Jquery bu hatayı neden atmalıdır?

cevap

34

element bir dom elemanı değil jQuery nesnesi ikinci parametre, bir jQuery nesnesi referans olarak dom elemanı referansını alacak each() işleyicisi içinde

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

çünkü. Bu nedenle, öğedeki herhangi bir jQuery yöntemine erişmek istiyorsanız, jQuery sarmalayıcı nesnesini almanız gerekir.

6

Sen düz JS nesne üzerinde .find() aradığınız, Ama bu fonksiyon Sen $() içine sararak bir jquery nesnesine dönüştürmek jQuery nesnesine

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

aittir. Ve bu tür uyuşmazlıkları önlemek için, diğerlerini kullanmak yerine $(this) referansını kullanabilirsiniz. Eğer "elemanını" için "Bu" değiştirmelisiniz

5

:

var eachProduct = $(".item"); 

eachProduct.each(function(index, element){ 

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

Kullanım $(this) akım Elemanı için

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