我有包含若干。數據(幾個子節點的DocumentFragment)添加像這樣:documentFragment.cloneNode(真)並不克隆jQuery的數據
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(真)
$(globalObj).data('fragment', { frag: $(mydocumentFragment).clone(true) });
$(myDocumentFragment).clone(true).appendTo('#div');
alert($('#div a:first').data('rowData').id); // undefined
'$('')'做什麼?你不是在那裏創造一個元素,所以我不知道期望什麼樣的行爲... – 2010-05-14 02:08:27
@Nick - 我認爲它是一個錯字。在前幾天的一個問題中,他使用'$('')'。 – user113716 2010-05-14 02:16:56
是的,堆棧溢出在那裏吃了一個標籤,哎呀。 – taber 2010-05-14 02:19:30