次のように追加された.data()を含むいくつかの子ノードを持つdocumentFragmentがあります。
myDocumentFragment = document.createDocumentFragment();
for(...) {
myDocumentFragment.appendChild(
$('<a></a>').addClass('button')
.attr('href', 'javascript:void(0)')
.html('click me')
.data('rowData', { 'id': 103, 'test': 'testy' })
.get(0)
);
}
documentFragmentをページのdivに追加しようとすると:
$('#div').append( myDocumentFragment );
私はデータにうまくアクセスできます:
alert( $('#div a:first').data('rowData').id ); // alerts '103'
しかし、cloneNode(true)を使用してノードのクローンを作成すると、ノードのデータにアクセスできなくなります。:(
$('#div').append( myDocumentFragment.cloneNode(true) );
...
alert( $('#div a:first').data('rowData').id ); // alerts undefined
他の誰かがこれを行ったか、回避策を知っていますか?行のデータをに格納できると思いますjQuery.data('#some_random_parent_div', 'rows', [array of ids])
が、それでは、各行でデータをすぐに/簡単に利用できるようにするという目的が少し損なわれます。
jQueryがdocumentFragmentsを使用していることも読みましたが、正確にどのように、どのメソッドで使用されているのかわかりません。誰かがそこにこれ以上の詳細を持っていますか?
再編集:.clone(true)
$(globalObj).data('fragment', { frag: $(mydocumentFragment).clone(true) });
$(myDocumentFragment).clone(true).appendTo('#div');
alert( $('#div a:first').data('rowData').id ); // undefined