Vic*_*let 6 javascript jquery dom javascript-events
这个jQuery 1.3.2代码为页面添加了一个元素,注册了一个"click"事件,然后删除并重新附加了该元素:
var button = $('<button>Click me!</button>')
.click(function(){ alert("Hello") })
.appendTo('body');
$('body').html('');
button.appendTo('body');
Run Code Online (Sandbox Code Playgroud)
该按钮按预期显示在页面上,但单击它不会执行任何操作.我想知道为什么从对象中删除了事件处理程序.
注:我知道的解决方案,如jQuery.live()或clone(true)或使用appendTo没有去除.我正在寻找的是解释,而不是解决方案或解决方法.
编辑:我想这可能是DOM的任意和反直觉的设计决策.像"因为这是规范Y希望它的X部分的方式"的解释会很好.
当您使用jQuery从DOM中删除元素时,jQuery在该元素上保存的所有数据(包括事件处理程序)都将被销毁.这样做是为了避免内存泄漏.
这不是DOM API的功能(或错误).这只是jQuery.