Perché funziona solo con Firefox?
Domanda
Ho creato un esempio autonomo per scoprire perché questo funziona solo in 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);
});
Qualsiasi browser webkit o IE fallisce su questa linea:
li.append(this);
questo è un HTMLInputElement. Qualche idea?
Grazie, Pete
Soluzione
Il problema è che questo " questo " è un nodo DOM già posizionato in qualche punto. Non puoi spostare i nodi DOM, che si trovano già da qualche parte senza prima rimuoverli o copiarli.
Se vuoi:
-
spostalo, devi farlo
li.append ($ (this) .remove ())
-
copiarlo, lo farai
li.append ($ (this) .clone (true))
In realtà, sono abbastanza perplesso, che dovrebbe funzionare in FF. In tal caso, è un bug FF.
Saluti,
Altri suggerimenti
Forse questo è un problema con l'elemento da cui stai provando a selezionare i figli o un problema con la versione di jQuery che stai utilizzando.
Sto usando 1.3.2 e sto usando il tuo codice (copia & amp; incollato). Posso eseguirlo con successo in FF 3, IE 8 e Chrome.