如果我覆盖html,它是否从dom中删除?

Ben*_*ess 6 jquery dom

想象一下,我有以下代码:

...
<div id="div1">
    <div id="div2">Original div2</div>
</div>

<div id="div3"></div>

...
Run Code Online (Sandbox Code Playgroud)

如果我跑

$('#div1').html('');
$('#div3').html('<div id="div2">New div2</div>');
Run Code Online (Sandbox Code Playgroud)

我最终会遇到问题,因为我没有使用.remove()从dom中删除#div2,或者以这种方式清除html对我这样做了吗?

如果div2包含一些附加了处理程序的javascript,比如说

$('#div2').on('click',function() { ... });
Run Code Online (Sandbox Code Playgroud)

会被删除,还是我需要关闭()它?

use*_*654 3

我最终会遇到问题吗,因为我没有使用 .remove() 从 dom 中删除 #div2,或者以这种方式清除 html 对我有用吗?

不,jQuery 将.remove在内部为您使用(从技术上讲,它使用cleanData,但它执行相同的清理操作。)

事件将会丢失,因此您必须重新绑定它们。