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

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top