В чем разница между replaceQith() и html() в jQuery?
В чем разница между функциями jQuery replaceWith() и html(), когда HTML передается в качестве параметра?
5 ответов
Возьми этот HTML-код:
<div id="mydiv">Hello World</div>
Выполнение:
$('#mydiv').html('Aloha World');
Приведет к:
<div id="mydiv">Aloha World</div>
Выполнение:
$('#mydiv').replaceWith('Aloha World');
Приведет к:
Aloha World
Таким образом, html() заменяет содержимое элемента, а replaceWith() заменяет фактический элемент.
replaceWith() заменит текущий элемент, тогда как html() просто заменит содержимое.
Обратите внимание, что replaceWith() на самом деле не удалит элемент, а просто удалит его из DOM и вернет вам в коллекции.
Пример для Питера: http://jsbin.com/ofirip/2
Существует два способа использования функций jquery html() и replaceWith().
<div id="test_id">
<p>My Content</p>
</div>
1.) html() против replaceWith()
var html = $('#test_id p').html();
вернет "Мой контент"
Но var replaceWith = $('#test_id p').replaceWith();
вернет весь объект DOM <p>My Content</p>
,
2.) HTML ('значение') против replaceWith('значение')
$('#test_id p').html('<h1>H1 content</h1>');
даст вам следующий выход.
<div id="test_id">
<p><h1>H1 content</h1></p>
</div>
Но $('#test_id p').replaceWith('<h1>H1 content</h1>');
даст вам следующий выход.
<div id="test_id">
<h1>H1 content</h1>
</div>
Старый вопрос, но это может кому-то помочь.
Существуют некоторые различия в том, как эти функции работают в Internet Explorer и Chrome / Firefox, если ваш HTML-код недействителен.
Очистите ваш HTML, и они будут работать как задокументировано.
(Не закрывая мой </center>
стоил мне мой вечер!)
Также может быть полезно знать, что .empty().append()
может также использоваться вместо .html()
, В показанном ниже тесте это происходит быстрее, но только если вам нужно многократно вызывать эту функцию.
Смотрите: https://jsperf.com/jquery-html-vs-empty-append-test