我正在解析一个大的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的新变量?
答案 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();
这会删除原始父文档中的元素。