+1 bardzo przydatne, aby zapisać, że funkcja replaceWith () w rzeczywistości nie usuwa elementu. Nie doszedłem do tego!
Peter,
2
To prawda, nadal istnieje. Nie ma go w DOM, więc go nie zobaczysz, ale nadal jest to prawidłowy fragment HTML. Dowód: jsbin.com/ofirip/2
cgp
1
tak to prawda. dzięki za pokazanie przykładu. Myślałem o usunięciu go z DOM (plus odśmiecanie) jako o usunięciu z mojego punktu widzenia. Ale masz techniczną poprawność. Usunę -1i mam nadzieję, że będzie to pomocne dla wszystkich. :)
Peter
1
Dzięki za notatkę, replaceWith () zwracając stary element właśnie dało mi trochę frustracji przy debugowaniu :(
dain
2
Tak, walczę z tym od co najmniej pół godziny, właśnie zdałem sobie sprawę, że funkcja zwraca zastąpiony element, spodziewałem się, że zwróci nowy z takim kodem: var $form = $target.closest('tr').replaceWith(html) Okazuje się, że $formzawiera element przed zamianą. westchnienie
Paweł Krakowiak
5
Istnieją dwa sposoby używania funkcji html () i replaceWith () Jquery.
<divid="test_id"><p>My Content</p></div>
1.) html () vs replaceWith ()
var html = $('#test_id p').html(); zwróci „Moje treści”
Ale
var replaceWith = $('#test_id p').replaceWith();zwróci cały obiekt DOM z
<p>My Content</p>.
2.) html ('wartość') vs replaceWith ('wartość')
$('#test_id p').html('<h1>H1 content</h1>'); da ci następujący wynik.
<divid="test_id"><p><h1>H1 content</h1></p></div>
Ale
$('#test_id p').replaceWith('<h1>H1 content</h1>');da ci następujące dane.
Warto również wiedzieć, że .empty().append()można go również użyć zamiast .html(). W benchmarku pokazanym poniżej jest to szybsze, ale tylko wtedy, gdy musisz wielokrotnie wywoływać tę funkcję.
Odpowiedzi:
Weź ten kod HTML:
Robić:
Spowoduje:
Robić:
Spowoduje:
Więc html () zastępuje zawartość elementu, a replaceWith () zastępuje rzeczywisty element.
źródło
replaceWith () zastąpi bieżący element, podczas gdy html () po prostu zastępuje zawartość.
Zauważ, że funkcja replaceWith () w rzeczywistości nie usunie elementu, ale po prostu usunie go z DOM i zwróci do Ciebie w kolekcji.
Przykład dla Petera: http://jsbin.com/ofirip/2
źródło
-1
i mam nadzieję, że będzie to pomocne dla wszystkich. :)var $form = $target.closest('tr').replaceWith(html)
Okazuje się, że$form
zawiera element przed zamianą. westchnienieIstnieją dwa sposoby używania funkcji html () i replaceWith () Jquery.
1.) html () vs replaceWith ()
var html = $('#test_id p').html();
zwróci „Moje treści”Ale
var replaceWith = $('#test_id p').replaceWith();
zwróci cały obiekt DOM z<p>My Content</p>
.2.) html ('wartość') vs replaceWith ('wartość')
$('#test_id p').html('<h1>H1 content</h1>');
da ci następujący wynik.Ale
$('#test_id p').replaceWith('<h1>H1 content</h1>');
da ci następujące dane.źródło
Stare pytanie, ale to może komuś pomóc.
Istnieją pewne różnice w działaniu tych funkcji w przeglądarkach Internet Explorer i Chrome / Firefox, JEŚLI Twój kod HTML jest nieprawidłowy.
Wyczyść swój kod HTML, a będą działać zgodnie z dokumentacją.
(Nie zamykam
</center>
kosztu mojego wieczoru!)źródło
Warto również wiedzieć, że
.empty().append()
można go również użyć zamiast.html()
. W benchmarku pokazanym poniżej jest to szybsze, ale tylko wtedy, gdy musisz wielokrotnie wywoływać tę funkcję.Zobacz: https://jsperf.com/jquery-html-vs-empty-append-test
źródło