Javascript 如果我用jQuery更改一个div的HTML,所有DOM元素和侦听器都会从内存中删除吗?
我在想,如果我用jQueryHTML方法覆盖div的html,所有“旧”DOM元素和从内存中删除的所有侦听器 例如: HTML: Javascript:Javascript 如果我用jQuery更改一个div的HTML,所有DOM元素和侦听器都会从内存中删除吗?,javascript,jquery,html,dom,Javascript,Jquery,Html,Dom,我在想,如果我用jQueryHTML方法覆盖div的html,所有“旧”DOM元素和从内存中删除的所有侦听器 例如: HTML: Javascript: $('anANotherDiv').click(function(){ var b='An Another Div' console.log(b); }); $('#aDiv').html('<div id='oDiv'>This div override the another</div>'); $
$('anANotherDiv').click(function(){
var b='An Another Div'
console.log(b);
});
$('#aDiv').html('<div id='oDiv'>This div override the another</div>');
$('#oDiv').click(function(){
var a='This div override the another';
console.log(a);
});
因此,当我重写旧的时,GC将删除旧的DOM元素和侦听器?您可以使用jQuery中的on方法,您可以使用它将事件绑定到父元素,这样即使您更改了实际目标DIV的内容,事件也会被附加,因为我们已经将事件绑定到父元素
//Example:
<div id='aDiv'>
<div id='anANotherDiv'>An Another Div</div>
</div>
$(function(){
$("#aDiv").on("click", "div", function(){
var a='This div override the another';
console.log(a);
});
});
为了解决事件侦听器问题,我通常使用全局单击方法: HTML 它会倾听身体的咔哒声,然后决定这是否是我们等待的咔哒声。
至于元件更换问题,你们无能为力。你必须想出一些其他的方法,而不是.html好的!!让我们从这里开始 这是你的HTML
<div id='aDiv'>
<div id='anANotherDiv'>An Another Div</div>
</div>
控制台输出将是
<div id='anANotherDiv'>An Another Div</div>
现在当你在你的控制台上做类似的事情时
$("#adIV").html();
$('#aDiv').html('<div id=\"oDiv\">This div override the another</div>');
控制台输出将仅为
<div id="oDiv">This div override the another</div>
你实际上是在完全操纵整个aDiv结构。html基本上改变了html结构。因此,您需要确定是要完全更改特定元素或节点的HTML结构,还是只需追加或执行其他操作
希望你明白我的意思
干杯 是的,没错。你想解决这个问题吗?很清楚,谢谢你的回答。javascript变量和事件侦听器有什么问题?我需要销毁一些东西吗?里面的DOM元素都会丢失。如果您对此很清楚,请接受我的回答,这样对其他人也有好处。javascript变量和事件侦听器不是DOM元素的一部分。在这里,任何操作都需要使用jQuery函数。如果要删除,请使用.remove。有很多函数可用。您可以查看jQuery API
<div id='anANotherDiv'>An Another Div</div>
$('#aDiv').html('<div id=\"oDiv\">This div override the another</div>');
<div id="oDiv">This div override the another</div>