我在我正在处理的网页上发现资源泄漏。jQuery点击事件可以解除绑定或重置吗?
此网页有两个文本框,单击显示模式对话框后,对后端执行数据请求,然后将该信息显示在表中,用户可以从中选择一个条目用于它们最初点击的文本框。
我绑定click事件的文本框,如下所示:
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时,断点被击中三次如果我点击A后即,断点四次。根据需要外推。)
无处不在我的代码中,我正在做任何有关给定字段的现有点击事件。我怀疑我的泄漏源于事件没有得到清理的事实。这就是说,我对JavaScript/jQuery也不是非常熟悉。什么是从控件中删除点击事件的一些技巧?
http://api.jquery.com/unbind/ –
.unbind()? http://api.jquery.com/unbind/ – supernova
[off()](http://api.jquery.com/off/)在更新的jquery版本 – fcalderan