在文档之外查找()

时间:2011-11-23 01:50:53

标签: jquery

我记得曾经在努力解决这个问题,但我用Google搜索并找不到参考资料。我想:

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
是什么给了什么?

4 个答案:

答案 0 :(得分:2)

执行x.find('.y')时,它会在x的子项中搜索类y的对象。它不会搜索x本身。

如果你这样做,你会发现:

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

您可以在此处查看:http://jsfiddle.net/jfriend00/bWxB4/

答案 1 :(得分:2)

.find()搜索jQueryified DOMElement的后代。您拥有的元素没有(DOMElement)后代,它唯一的后代是具有数据xxx的文本节点。

这将找到一个结果:

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

由于div具有类y的后代。

答案 2 :(得分:2)

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

这不起作用,因为你要告诉它要做的是当元素本身就是你正在寻找的东西时,在新创建的元素中找到一个具有类y 的元素

Here是可行的:

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

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

答案 3 :(得分:0)

第一个问题是因为你在div里面“搜索”,所以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