我想采用这样的字符串:
<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)
答案 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)
就可以了。