如何选择没有父节点的节点?

时间:2010-11-24 12:50:56

标签: jquery jquery-selectors

我想采用这样的字符串:

<div>my div 1</div><p>para1</p><p>para2</p><p>para3</p><div>my div 2</div>

然后删除所有<p>个节点。

我遇到这个问题很困难因为我认为上面的字符串没有上下文,而JQuery需要一个上下文来使用选择器才能工作:

var p = "<div>my div 1</div><p>para1</p><p>para2</p><p>para3</p><div>my div 2</div>"
var pj = $(p)

当我在FireBug中运行下面的语句时,我没有返回任何元素。这是因为'p'变量需要包装在另一个div中才能工作吗?我希望能够从字符串中剥离元素,即使它不是DOM的一部分。

$("p",pj)

1 个答案:

答案 0 :(得分:2)

您需要.filter()来搜索同一级别的元素,例如:

$(pj).filter("p");

$("p",pj)转换为$(pj).find("p"),因为<p>元素是pj的后代,它们是成员,因此它找不到任何内容。要清楚,jQuery不需要它们包含在任何东西中,它是后代与非后代问题。


另一种方法是将它们添加到临时片段中并始终使用.find(),如下所示:

var p = "<div>my div 1</div><p>para1</p><p>para2</p><p>para3</p><div>my div 2</div>"
var pj = $('<div />').html(p);

然后$("p",pj)就可以了。