das hat mir geholfen! Ich habe versucht, den Text eines Labels mithilfe von jquery dynamisch zu ändern, und dieser Thread hat mir definitiv geholfen. Vielen Dank!
HereToLearn_
Antworten:
289
Nehmen Sie diesen HTML-Code:
<divid="mydiv">Hello World</div>
Tun:
$('#mydiv').html('Aloha World');
Wird darin enden, dass:
<divid="mydiv">Aloha World</div>
Tun:
$('#mydiv').replaceWith('Aloha World');
Wird darin enden, dass:
AlohaWorld
So html () ersetzt den Inhalt des Elements, während replaceWith () ersetzt das eigentliche Element.
replaceWith () ersetzt das aktuelle Element, während html () einfach den Inhalt ersetzt.
Beachten Sie, dass replaceWith () das Element nicht tatsächlich löscht, sondern es einfach aus dem DOM entfernt und an Sie in der Auflistung zurückgibt.
+1 sehr nützlich, um aufzuschreiben, dass replaceWith () das Element nicht tatsächlich löscht. Ich hatte das nicht herausgefunden!
Peter
2
Es ist wahr, es existiert immer noch. Es befindet sich nicht im DOM, Sie werden es also nicht sehen, aber es ist immer noch ein gültiges Stück HTML. Beweis: jsbin.com/ofirip/2
cgp
1
Ja, das stimmt. Vielen Dank für das Beispiel. Ich dachte daran, es aus meiner Sicht aus dem DOM (plus Garbage Collection) zu entfernen. Aber du bist technisch korrekt. Ich werde das entfernen -1und hoffe, dass dies für alle hilfreich ist. :)
Peter
1
Vielen Dank für den Hinweis, replaceWith (), das alte Element zurückzugeben, gab mir nur einige Frustration beim Debuggen :(
dain
2
Ja, ich kämpfe jetzt seit mindestens einer halben Stunde dagegen. Ich habe gerade festgestellt, dass die Funktion das ersetzte Element zurückgibt. Ich hatte erwartet, dass es das neue mit folgendem Code zurückgibt: var $form = $target.closest('tr').replaceWith(html) Es stellt sich heraus, dass es $formdas Element vor dem Ersetzen enthält. Seufzer
Pawel Krakowiak
5
Es gibt zwei Möglichkeiten, die Jquery-Funktionen html () und replaceWith () zu verwenden.
<divid="test_id"><p>My Content</p></div>
1.) html () vs replaceWith ()
var html = $('#test_id p').html(); gibt "Mein Inhalt" zurück
Aber das
var replaceWith = $('#test_id p').replaceWith();wird das gesamte DOM-Objekt von zurückgeben
<p>My Content</p>.
2.) html ('value') vs replaceWith ('value')
$('#test_id p').html('<h1>H1 content</h1>'); wird Ihnen die folgende Ausgabe geben.
<divid="test_id"><p><h1>H1 content</h1></p></div>
Aber das
$('#test_id p').replaceWith('<h1>H1 content</h1>');wird dir folgendes geben.
Deshalb sollten Sie Center nicht mehr verwenden. : p
Romain Stämme
2
Es kann auch nützlich sein zu wissen, dass .empty().append()dies auch anstelle von verwendet werden kann.html() . In der unten gezeigten Benchmark ist dies schneller, aber nur, wenn Sie diese Funktion mehrmals aufrufen müssen.
Antworten:
Nehmen Sie diesen HTML-Code:
Tun:
Wird darin enden, dass:
Tun:
Wird darin enden, dass:
So html () ersetzt den Inhalt des Elements, während replaceWith () ersetzt das eigentliche Element.
quelle
replaceWith () ersetzt das aktuelle Element, während html () einfach den Inhalt ersetzt.
Beachten Sie, dass replaceWith () das Element nicht tatsächlich löscht, sondern es einfach aus dem DOM entfernt und an Sie in der Auflistung zurückgibt.
Ein Beispiel für Peter: http://jsbin.com/ofirip/2
quelle
-1
und hoffe, dass dies für alle hilfreich ist. :)var $form = $target.closest('tr').replaceWith(html)
Es stellt sich heraus, dass es$form
das Element vor dem Ersetzen enthält. SeufzerEs gibt zwei Möglichkeiten, die Jquery-Funktionen html () und replaceWith () zu verwenden.
1.) html () vs replaceWith ()
var html = $('#test_id p').html();
gibt "Mein Inhalt" zurückAber das
var replaceWith = $('#test_id p').replaceWith();
wird das gesamte DOM-Objekt von zurückgeben<p>My Content</p>
.2.) html ('value') vs replaceWith ('value')
$('#test_id p').html('<h1>H1 content</h1>');
wird Ihnen die folgende Ausgabe geben.Aber das
$('#test_id p').replaceWith('<h1>H1 content</h1>');
wird dir folgendes geben.quelle
Alte Frage, aber das kann jemandem helfen.
Es gibt einige Unterschiede in der Funktionsweise dieser Funktionen in Internet Explorer und Chrome / Firefox, wenn Ihr HTML nicht gültig ist.
Bereinigen Sie Ihren HTML-Code und sie funktionieren wie dokumentiert.
(Nicht zu schließen hat
</center>
mich meinen Abend gekostet!)quelle
Es kann auch nützlich sein zu wissen, dass
.empty().append()
dies auch anstelle von verwendet werden kann.html()
. In der unten gezeigten Benchmark ist dies schneller, aber nur, wenn Sie diese Funktion mehrmals aufrufen müssen.Siehe: https://jsperf.com/jquery-html-vs-empty-append-test
quelle