Warum funktioniert das nur Arbeit in Firefox?
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
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.