2012-11-16 13 views
19

En uygun eleman ı onunla işlemek için JQuery nesne olarak div yukarıdaki almak istiyorumHTML dize

var testHTML = "<div id='demo_div'></div>"; 

olduğunu kabul edelim.

var found = $(testHTML).find("#demo_div"); 

ile: Birlikte onu bulmaya

var found = $(testHTML).find("div"); 

Hem şans olmadan. Boş bulundu değişken. Neyi yanlış yapıyorum?

P.S. Evet ben

$("#demo_div") 

ile benim div doğrudan erişim olabilir biliyorum ama benim durumumda bunu yapamaz - Biraz değişken gibi atanacak düz HTML onu almak gerekir örneğimde testHTML var.

GÜNCELLEME: eleman buradaki gibi Ben kökünü olmasınız bile div:

var testHTML = "<html><div id='demo_div'></div></html>"; 

Ben div eleman gezinmek için bulmak kullanamazsınız.

cevap

48

sorun senin div koleksiyonunda kök öğesi olduğunu, yani (sadece soyundan elemanları bakar) .filter() yerine .find() kullanmak gerekir: Ben gerçek HTML farz ediyorum

var found = $(testHTML).filter("#demo_div"); 

dize, sorudakilerden daha karmaşıktır, aksi halde $(testHTML)'dan başka bir şey yapmanız gerekmez ve bu tek öğeyi içeren bir jQuery nesnesine sahip olursunuz.

+1

Evet Daha karmaşık HTML'im var ve div'm bunun kökü değil. Ama _find_ orada çalışmıyor! –

+3

@MichaelZ - O zaman sorun muhtemelen başka bir yerde. Aradığınız öğe koleksiyonun kökünde ise, '.filter()' kullanın, eğer değilse, '.find()' kullanın. Bkz. [Bu örnek] (http://jsfiddle.net/jamesallardice/CWnvu/1/). –

+0

Güncellemeye bakın ve kendiniz deneyin –

0

Javascript'in .search() işlevini kullanabilirsiniz.

testHTML.search('demo_div')>-1