2011-06-29 177 views
1

我解析一个大型的XML对象,我想把单个片断作为独立的对象 - 也就是说,这些新的对象应该不包含引用父(源) XML。如何选择jQuery的孩子没有参考父母

但是,

如果你建造这个代码:

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?

回答

1

你应该能够克隆它们:

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

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

你从原来的结构,创造新的节点分开,离开原来的不变。

+0

完美。这正是我需要的。 – Christopher

1

听起来你正在寻找detach

.detach()方法是一样的.remove(),除了.detach()保持与删除的元素相关联的所有jQuery的数据。此方法在以后将被移除的元素重新插入DOM时非常有用。

你会做这样的事情:

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

这虽然删除从原来的父文档的元素。

+0

这非常了解。在这种情况下,clone()是我需要的方法。 – Christopher