2009-05-21 7 views
1

Comment venir cela fonctionne:Comment je peux ajouter des objets en utilisant appendTo mais pas en jQuery?

var items = []; 
$.each([1,2,3,4], function() { 
    items.push($('<li />').html('test' + this)); 
}); 
// clearing/appending as two seperate calls 
$('ul').empty(); 
$(items).appendTo('ul'); 

mais cela ne fonctionne pas?

var items = []; 
$.each([1,2,3,4], function() { 
    items.push($('<li />').html('test' + this)); 
}); 
// clearing/appending in one fluent call 
$('ul').empty().append($(items)); 

De cette façon, jette l'erreur suivante:

No such interface supported.

+0

Les deux exemples travaillent pour moi, Firefox: 3.0.10 jQuery: 1.2.3, exactement ce que lance l'erreur? – duckyflip

+0

ce dernier a échoué pour moi sur Firefox 3.0.10 avec jQuery 1.3, mais le premier a fonctionné. – jacobangel

+0

J'utilise jQuery 1.3 et IE 8 – bendewey

Répondre

1

Je crois qu'il est dû à la mise en œuvre. Si vous regardez la façon dont AppendTo est écrit, il prend essentiellement chaque élément dans le tableau items et exécute un $ ("ul"). Append (items [i]). Append semble ne pas fonctionner sur les tableaux. Vous remarquerez que même sans le vide, votre ligne ne fonctionnera toujours pas. Je ne comprends pas complètement les fonctionnements de append, mais je crois que ce qui se passe est la fonction chomps à travers tous les arguments séquentiellement, mais ne tente jamais de casser les éléments hors d'un tableau. Donc, ce qui se passe, c'est qu'il tente d'ajouter un tableau à un élément et échoue. Ironiquement, cela fonctionnerait: $ ("ul"). Empty(). Append (items [0], items [1], items [2], items [3]);

Quoi qu'il en soit, vous auriez à faire quelque chose comme ça pour accomplir ce que vous semblez viser à faire:

$("ul").empty(); $(items).each(function(e, elem) {$('ul').append(elem);})

+0

Merci, même si je peux juste coller avec le premier exemple. Le but était de limiter le nombre de fois où je devais sélectionner l'élément ul. le premier exemple le sélectionne deux fois, le second n'est qu'une seule fois, mais votre exemple ici est 1 + n éléments dans le tableau. – bendewey

0

si vous changez votre 2ème exemple dernière ligne de ce

$('ul').empty().append(items); 
Questions connexes