我在我正在处理的网页上发现了资源泄漏。
该网页有两个文本字段,单击时显示模式对话框,向后端执行数据请求,然后在表格中显示该信息,用户可以从中选择一个条目以在他们最初单击的文本框中使用。
我将点击事件绑定到文本框,如下所示:
var $field = $('#one-of-the-text-fields');
$field.click(function () {
App.DialogClass.show();
App.DialogClass.PopulateTable();
App.DialogClass.GotoPageButtonAction(actionArgs); // Offender!
});
...调用...
App.DialogClass = (function($) {
var pub {},
$gotoPage = $('#pageNumberNavigationField'),
$gotoPageButton = $('#pageNumberNavigationButton');
// ...SNIP unimportant other details...
pub.GotoPageButtonAction = function (args) {
$gotoPageButton.click(function () {
var pageNumber = $gotoPage.val();
pub.PopulateTable(args); // Breakpoint inserted here...
});
};
return pub;
})(jQuery);
我注意到泄漏是因为当我使用 Chrome 的 JavaScript 调试器运行时,每次单击不同的按钮时总是会遇到一个额外的断点(例如,当我第一次单击字段 A 时,断点会被命中两次。当我点击字段时B之后,断点被击中3次。如果我在那之后点击A ,断点被击中四次。根据需要外推。)
在我的代码中,我没有对给定字段的现有点击事件做任何事情。我怀疑我的泄漏源于事件没有得到清理的事实。话虽如此,我对 JavaScript/jQuery 也不是很熟悉。从控件中删除点击事件有哪些技巧?