想象一下,我有以下代码:
...
<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)
会被删除,还是我需要关闭()它?
我最终会遇到问题吗,因为我没有使用 .remove() 从 dom 中删除 #div2,或者以这种方式清除 html 对我有用吗?
不,jQuery 将.remove在内部为您使用(从技术上讲,它使用cleanData,但它执行相同的清理操作。)
事件将会丢失,因此您必须重新绑定它们。