Je veux utiliser document.createDocumentFragment()
pour créer une collection optimisée d'éléments HTML contenant ".data" provenant de jQuery (v 1.4.2), mais je suis un peu bloqué sur la façon de faire remonter les données des éléments HTML.
Voici mon code:
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);
// erreur: $('#list a:first').data('genreData') est nul
alert($('#list a:first').data('genreData').id);
Qu'est-ce que je fais de mal ici? Je soupçonne que c'est probablement quelque chose avec .cloneNode()
qui ne transfère pas les données lorsque l'élément est ajouté au documentFragment
. Parfois, il y a des tonnes de lignes donc je veux garder les choses assez optimisées en termes de vitesse.
Merci!