我记得曾经在努力解决这个问题,但我用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
是什么给了什么?
答案 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