如何在不引用父级的情况下选择jQuery子级

时间:2011-06-29 01:12:16

标签: jquery xml

我正在解析一个大的XML对象,我想将各个部分分割为独立的对象 - 也就是说,这些新对象不应该包含对父(源)XML的引用。

然而

如果我构造这段代码:

var a = $('<parent><child>Exclude Parent</child></parent>');        
var b = $('>child', a);  
var c = a.children('child'); 

console.log(a.children('child').parent());                  
console.log(b.parent());                   
console.log(c.parent());

其中每个仍然保留父参考。我希望var b和c是独立的对象,但它们不是。我可以将子XML转换为字符串,然后重新命名为jQuery对象,但这似乎既昂贵又不必要。

如何实现一个表示 jQuery选择器的XML的新变量?

2 个答案:

答案 0 :(得分:1)

你应该能够克隆它们:

var c = a.children('child').clone();

console.log( c.parent().length );  // 0

您正在创建除原始结构之外的新节点,保留原始节点。

答案 1 :(得分:1)

听起来像是在寻找detach

  

.detach()方法与.remove()相同,只是.detach()保留与删除的元素关联的所有jQuery数据。当删除的元素稍后要重新插入DOM时,此方法很有用。

你会做这样的事情:

var a_kids = a.find(selector).detach();

这会删除原始父文档中的元素。