2011-06-29 12 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 

。あなたがdetachを探しているよう

+0

パーフェクト。これはまさに私が必要としていたものです。 – Christopher

1

サウンズ:

.detach()方法は.remove()と同じであり、その.detach()が取り除かれた要素に関連付けられているすべてのjQueryのデータを保持する点が異なります。このメソッドは、削除された要素が後でDOMに再挿入される場合に便利です。

あなたはこのような何かをしたい:

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

これは、しかし、元の親ドキュメントから要素を削除します。

+0

これは知っていると優れています。この場合、clone()は必要なメソッドです。 – Christopher

関連する問題