为什么jQuery.find无法使用片段

时间:2014-01-27 18:42:25

标签: javascript jquery

为什么这个jQuery片段:

var html = '<div id="a">abc</div>' +
    '<div id="b">def</div>';
$(html).find('#a')

返回空结果([])? (fiddle

如何在不将#a div插入实际DOM文档的情况下访问它?

2 个答案:

答案 0 :(得分:4)

这是因为#a是父节点。 find()搜索子/孙等等。您需要再次对其进行搜索才能使用find()

var $html = $('<div id="a">abc</div><div id="b">def</div>');
var x = $('<div></div>').append($html);
console.log(x.find('#a'));

<强> Live demo (click).

filter()可以满足您的需求:

var $html = $('<div id="a">abc</div><div id="b">def</div>');
console.log($html.filter('#a'));

<强> Live demo (click).

答案 1 :(得分:4)

查找子节点中的外观。由于#a是您的顶级节点,因此无法找到它。将片段包装在父元素中,或使用.filter('#a')