Frage

Ich habe ein in sich geschlossenes Beispiel erstellt, um herauszufinden, warum dies funktioniert nur 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);
});

Jeder Browser Webkit oder sogar IE nicht auf dieser Linie:

li.append(this);

das ist ein Htmlinputelement. Irgendwelche Ideen?

Danke, Pete

War es hilfreich?

Lösung

Das Problem ist, dass „dies“ ein DOM-Knoten bereits an einem bestimmten Ort befindet. Sie können sich nicht bewegen DOM-Knoten um, dass bereits irgendwo befinden, ohne vorher zu entfernen oder zu kopieren.

Wenn Sie wollen:

  • verschieben, was Sie tun müssen

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

  • kopieren, was Sie tun

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

Eigentlich bin ich ganz verwirrt, dass es in FF arbeiten sollte. Ist dies der Fall, es ist ein FF-Fehler.

Cheers,

Andere Tipps

Vielleicht ist dies ein Problem mit dem Element, das Sie die Kinder wählen versuchen, aus, oder ein Problem mit der Version von jQuery Sie verwenden.

Ich bin mit 1.3.2 und mit Ihrem Code (Kopie & Einfügen) Ich kann diese erfolgreich ausgeführt in FF 3, IE 8 und Chrome.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top