2009-06-17 10 views
3

J'ai créé un indépendant par exemple pour savoir pourquoi ce ne fonctionne que dans Firefox:Pourquoi cela ne fonctionne que dans Firefox?

var ul = jQuery('<ul></ul>'); 

jQuery(selector).children().each(function() { 
    var li = jQuery('<li></li>'); 
    var label = '<label for="' + this.id + '">' + this.name + '</label>'; 
    li.append(label); 
    li.append(this); 
    ul.append(li); 
}); 

Tout navigateur webkit ou même IE échoue sur cette ligne:

li.append(this); 

c'est un HTMLInputElement. Des idées?

Merci, Pete

+0

Un message d'erreur particulier? – Matchu

+0

Chrome ne rapporte aucun contenu. Il meurt juste à cette ligne. – slypete

Répondre

1

Le problème est que "this" est un noeud DOM déjà situé à un endroit. Vous ne pouvez pas déplacer les nœuds DOM qui se trouvent déjà quelque part sans les avoir d'abord supprimés ou copiés.

Si vous voulez:

  • déplacer, vous devez faire

    li.append ($ (this) .remove())

  • copie, vous » ll ne

    li.append ($ (this) .clone (true))

En fait, je suis assez perplexe, que cela devrait fonctionner en FF. Si c'est le cas, c'est un bug FF.

Cheers,

+0

Merci! Je n'ai même pas pensé à ça puisque le sélecteur est quelque chose sur une page distante. – slypete

0

Peut-être un problème avec l'élément que vous essayez de sélectionner les enfants de, ou un problème avec la version de jQuery que vous utilisez. J'utilise 1.3.2 et en utilisant votre code (copie & collé) Je peux exécuter avec succès dans FF 3, IE 8, et Chrome.

+0

J'utilise aussi 1.3.2. – slypete

Questions connexes