2010-09-03 17 views
8
görmezden

Benim jQuery nesnesi şöyle görünür:,jQuery.find() kök düğümü

var myJq = jQuery("<div class='a'></div><div class='b'></div>") 

myJq.find(".a") boş jQuery nesnesi döndüren görünüşte çünkü find() aramalar yalnızca çocukların jQuery nesnenin içerdiği düğümlerin, düğümlerin kendileri değil.

myJq'daki bir seçiciyi kullanarak divlardan birini nasıl alabilirim?

cevap

14

Bunun yerine .filter() kullanmanız gerekir.

Bu, jQuery nesnesinin en üst düzeyindeki öğeler arasında filtreleme yapacaktır.

myJq.filter(".a") 
+0

Harika. Teşekkürler! – morgancodes

+0

@morgancodes - Rica ederim. : o) – user113716

1

Sen .filter()

var div = myJq.filter('.a'); 

ya da (iyi, daha hızlı) kullanan kullanabilirsiniz ya .first()

var div = myJq.first('.a'); 

Benchmark

var myJq = jQuery("<div class='a'></div><div class='b'></div>") 
var loop = 20000; 

console.time('filter'); 
while(loop--){ 
    var blah = myJq.filter(".a"); 
} 
console.timeEnd('filter'); 

loop = 20000; 

console.time('first'); 
while(loop--){ 
    var blah = myJq.first(".a"); 
} 
console.timeEnd('first'); 

.first() benim için yaklaşık 8x daha hızlı. İşte

+0

Doğru. İndeksle yakalama, seçiciden daha hızlı, ancak yapı değiştiğinde daha hassas/daha yüksek bir bakım gerektirecektir. +1 – user113716

+3

'.first()' düşündüğünüz gibi çalışmıyor. Ne demek istediğimi görmek için myJq.first ('.b') 'yi yapmayı deneyin. '.first()' basitçe '.qq (0)' –

+0

için şeker yöntemidir Diğer bir deyişle, geçtiğiniz argüman göz ardı edilir. –