我試圖阻止在特定狀態下被調用的jQuery函數。即使在更改元素後,jQuery函數通過它的ID映射到元素ID
$('#first-page').click(function(event) {
// some code
$(event.target).attr("id","no-id");
// more code
}
對於我重命名的元素的ID如上所示。但函數仍然被調用。這不應該停止嗎?
我試圖阻止在特定狀態下被調用的jQuery函數。即使在更改元素後,jQuery函數通過它的ID映射到元素ID
$('#first-page').click(function(event) {
// some code
$(event.target).attr("id","no-id");
// more code
}
對於我重命名的元素的ID如上所示。但函數仍然被調用。這不應該停止嗎?
這不應該停止嗎?
不,因爲處理程序直接綁定到元素。該選擇器僅用於最初的查找元素。它不在事件發生時使用,因此更改元素的ID對處理程序沒有任何影響。
$('#first-page').click(function handler(event) {
// some code
$(this).off(handler);
// more code
});
jQuery的結合事件偵聽器來代表你的元件的DOM對象,其在由所提供的選擇器第一識別。
所以要去除onclick事件,你應該嘗試這樣的:
$('#first-page').unbind('click');
如果你真的要禁用這種方式,使用'on'委派的版本。例如'$(document).on('click','#first-page',function(event){...});'這適用於事件在更高級別被捕獲之後的過濾器。如果id改變,它將不再匹配。 –