我有一个包含几个子节点的 documentFragment,其中添加了一些 .data(),如下所示:
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