我想使用document.createDocumentFragment()
創建一個包含來自jQuery(v 1.4.2)的「.data」的HTML元素的優化集合,但我是有種如何從HTML元素中獲取數據的問題。使用document.createDocumentFragment()包含jQuery.data的子DOM元素
這裏是我的代碼:
var genres_html = document.createDocumentFragment();
$(xmlData).find('genres').each(function(i, node) {
var genre = document.createElement('a');
$(genre).addClass('button')
.attr('href', 'javascript:void(0)')
.html($(node).find('genreName:first').text())
.data('genreData', { id: $(node).find('genreID:first').text() });
genres_html.appendChild(genre.cloneNode(true));
});
$('#list').html(genres_html);
// error: $('#list a:first').data('genreData') is null
alert($('#list a:first').data('genreData').id);
什麼我錯在這裏做什麼?我懷疑這可能是.cloneNode()
在元素被追加到documentFragment
時不攜帶數據的東西。有時候會有很多行,所以我想讓事情保持優化,速度明智。
謝謝!
是的,我認爲這是我很困惑的主要部分,我不知道我是否想從一個jQuery對象開始或不。我在看這張幻燈片,但它是純JS:http://ejohn.org/apps/workshop/adv-talk/#6 - 我需要的是基本上將它轉換爲一個jQuery對象,它包含元素數據。 – taber 2010-05-11 19:15:11
你可以使用原生的'setAttribute'和'innerHTML'函數,但是如果你需要使用jQuery的'data()',顯然你需要一個jQuery對象。所以問題是,*你真的需要使用'數據'*嗎?也許你可以設置自定義屬性。我會用可能性更新我的答案。 – user113716 2010-05-11 19:20:42
謝謝,是的問題是我無法追加一個「jQuerified」documentElement(包含數據)到我的documentFragment。是的,我想使用'數據'。 :( – taber 2010-05-11 19:23:49