2011-11-23 41 views
0

我記得之前一直在苦苦掙扎,但是我用google搜索了一下,找不到引用。我想:find()在文檔的外部

var x = $('<div class="y">xxx</div>'); 
x.find('.y'); // returns 0 elements 

並期望找到1個元素,但找到0.它是關於被附加到文檔?我試過類似的失敗:

var x = $('<div class="y">xxx</div>'); 
$(document).append(x); 
alert($(document).find('.y').length); // also returns 0 elements 

什麼給?

+0

你能交你希望得到一個返回元素的HTML。 –

+0

你想放置在哪裏?它在文檔之外沒有太大的影響(反正也不行,所以......) – Purag

回答

2
var x = $('<div class="y">xxx</div>'); 
x.find('.y'); 

這不起作用,因爲什麼你告訴它做的是內找到y元素新創建的元素,當元素本身就是你要找的東西。

Here是一些作品:

$('<div class="y">xxx</div>') 
    .appendTo("html"); 

alert($('.y').length); 
2

當你做x.find('.y'),它正在尋找x的孩子的y類的對象。它不搜索x本身。

如果你這樣做,你會發現:

var x = $('<div><div class="y">xxx</div></div>'); 
x.find('.y'); 

你可以看到這裏的工作:http://jsfiddle.net/jfriend00/bWxB4/

+0

哦,基督。當然!我需要像'$('

xxx
')'爲了這個工作...有人射我 – ekkis

+0

爲什麼有人downvote這個?我希望downvote需要一個理由/解釋。 – jfriend00

+0

嘗試並失敗:http://meta.stackexchange.com/questions/6521/allow-users-to-leave-an-anonymous-comment-when-voting – Purag

2

.find()搜索jQuery化DOME元素的後代。您擁有的元素沒有(DOMElement)後裔,它所擁有的唯一後代是一個文本節點,其數據爲xxx

這會找到一個結果:

var $x = $('<div><div class="y">xxx</div></div>'); 
$x.find('.y'); 

由於div有與y類的後代。

0

的第一個問題是因爲你搜索「內部」的股利,所以find()方法沒有發現任何東西。

你可以嘗試:

var x = $('<div><div class="y">xxx</div></div>'); 
x.find('.y'); //1 element 

第二個,當你附加到文件,而並沒有真正在DOM中添加任何東西,你可以嘗試

var x = $('<div class="y">xxx</div>'); 
$(document.body).append(x); 
alert($(document).find('.y').length); //1