2013-11-25 91 views
2

這個代碼DOEN的工作..爲什麼jQuery不能提醒HTML標籤包含身體標籤?

alert($('<body><div id="tmp">111</div></body>').find("#tmp").text()); 

但這個工程

alert($('<div><div id="tmp">111</div></div>').find("#tmp").text()); 

這是爲什麼?謝謝..

+0

我已經看到了一些以前的職位,這種行爲以及在HTML解析器的行爲就像這樣,當它與像'templat一些涉及標籤e'等 –

回答

1

您的$('.....代碼不是選擇器。它試圖從你的HTML中創建一個新的DOM元素。

我猜它不適用於<身體>標籤,因爲每頁只能有一個身體標籤。

+0

我覺得這個解釋不完整。例如,即使是「p」也不行。嘗試'警報($('

111

').find(「#tmp」)。text());' –

+0

有趣。也許@阿倫上面是正確的。 find和filter之間的區別在於它是否會匹配根元素。過濾器將匹配根和子元素,而查找將只匹配子項(嵌套或其他)。 –

3

它看起來像HTML解析被解纏body元素,所以jQuery對象是具有tmp元素作爲根元素不是body元素,讓你的find方法將無法正常工作,您需要使用filter

console.log($('<body><div id="tmp">111</div></body>').filter("#tmp").text()); 

或在這種情況下

console.log($('<body><div id="tmp">111</div></body>').text()); 
相關問題