2011-11-23 60 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