2014-05-22 61 views
0

我試圖阻止在特定狀態下被調用的jQuery函數。即使在更改元素後,jQuery函數通過它的ID映射到元素ID

$('#first-page').click(function(event) { 
     // some code 
     $(event.target).attr("id","no-id"); 
     // more code 
} 

對於我重命名的元素的ID如上所示。但函數仍然被調用。這不應該停止嗎?

+0

如果你真的要禁用這種方式,使用'on'委派的版本。例如'$(document).on('click','#first-page',function(event){...});'這適用於事件在更高級別被捕獲之後的過濾器。如果id改變,它將不再匹配。 –

回答

0

這不應該停止嗎?

不,因爲處理程序直接綁定到元素。該選擇器僅用於最初的查找元素。它不在事件發生時使用,因此更改元素的ID對處理程序沒有任何影響。

只需undbind the event handler

$('#first-page').click(function handler(event) { 
     // some code 
     $(this).off(handler); 
     // more code 
}); 
0

jQuery的結合事件偵聽器來代表你的元件的DOM對象,其在由所提供的選擇器第一識別。

所以要去除onclick事件,你應該嘗試這樣的:

$('#first-page').unbind('click');