我在我正在處理的網頁上發現資源泄漏。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