2012-11-16 79 views
19

查找元素讓我們假設我有在HTML字符串

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

我想上面DIV如jQuery對象與它來操作。我試着找到它:

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

,並用:

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

兩個沒有運氣。我有空發現變量。我做錯了什麼?

P.S.是的,我知道我可以有我的DIV

$("#demo_div") 

直接訪問,但我不能這樣做在我的情況 - 我需要從純HTML將被分配給某個變量,就像得到它在我的例子中使用testHTML var。

UPDATE: 即使我沒有根的div元素喜歡這裏:

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

我不能使用找到用於導航DIV元素。

回答

48

的問題是,你的div是集合中的根元素,所以你需要使用.filter()代替.find()(只着眼於後代元素):

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

我假設你的實際的HTML字符串比問題中的字符串更復雜,否則除了$(testHTML)之外,您不需要執行任何操作,並且您將擁有包含該單個元素的jQuery對象。

+1

是的我有更復雜的HTML,我的div不是它的根。但_find_在那裏不起作用! –

+3

@MichaelZ - 那麼你的問題很可能在其他地方。如果要查找的元素位於集合的根目錄下,請使用'.filter()',如果不是,則使用'.find()'。看[這個例子](http://jsfiddle.net/jamesallardice/CWnvu/1/)。 –

+0

查看我的更新並自己嘗試 –

0

您可以使用javascript本身的.search()函數。

testHTML.search('demo_div')>-1