假设你有这个HTML代码:
<button id="click-me" type="button">Click Me!</button>
你运行这个jQuery片段:
var button = $('#click-me');
button.on('click', function() {
console.log('Clicked !');
});
button.replaceWith('<button id="click-me" type="button">Click Me (Replaced)!</button>');
当然按钮什么也不做,因为它被另一个没有点击事件处理程序的按钮所取代,对吗?
我的问题是:点击事件处理程序是否仍然存在于内存中?或者,它是否被垃圾收集过程删除了?
答案 0 :(得分:0)
click事件处理程序是否仍然存在于内存中的某个位置?或者,它是否被垃圾收集过程删除了?
不,事件再也没有被绑定,因为函数replaceWith
删除了前一个元素button
的完整DOM。
您可以使用事件委派将该事件“绑定”到元素#click-me
:
var button = $('#click-me');
$(document).on('click', '#click-me', function() {
console.log('Clicked !');
});
button.replaceWith('<button id="click-me" type="button">Click Me (Replaced)!</button>');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="click-me" type="button">Click Me!</button>