我处于一种情况,我进行了很多 ajax 调用来更改 html 的同一部分。这个 html 代表一个网格。在 ajax 调用中更改 html 后,我将事件处理程序附加到网格的事件。当用户单击刷新按钮时,我执行相同的 ajax 调用来设置新的 html 代码,并再次添加一个事件处理程序来侦听网格的事件。
我想知道每次刷新我的网格并添加一个新的事件处理程序是否前一个事件处理程序仍在内存中,如果是,在这种情况下的最佳做法是什么?(例如,如果在放置新 html 之前存在,则取消绑定事件处理程序)
这是我所做的一个例子:
$.get(this.config.actionLoggingUserListUrl, viewModel, function (data) {
MyNamespace.ui.hideGridAnimation($("#LoggingActionUsersList"));
if (data.success) {
$("#validationSummary").html("");
$("#usersList").html(data.result);
$("#LoggingActionUsersList").click(function() {
console.log("Here is my event handler attached multiple times!");
});
}
else {
$("#validationSummary").html(data.result);
$("#usersList").html("");
}
});
请注意,我在这种情况下所说的事件处理程序是:
$("#LoggingActionUsersList").click(function() {
console.log("Here is my event handler attached multiple times!");
});