[英]How to overwrite jquery event handlers
我會嘗試用一個簡單的代碼來解釋這個問題。
var fireClick = function() { alert('Wuala!!!') };
$('#clickme').click(fireclick);
$('#clickme').click(fireclick);
所以現在它顯然會發出 2 次警報,但我只需要它發出一次警報。 嘗試了很多方法,但沒有結果。
謝謝。
從 jQuery 1.7 開始,您應該使用off來刪除事件處理程序並使用on來添加它們,盡管您仍然可以使用click
速記。
$('#clickme').off('click').on('click', fireclick);
$('#clickme').off().on('click', fireclick);
原答案:
如果要替換所有單擊處理程序,請先調用unbind而不使用函數參數。 如果要替換所有事件處理程序,請不要指定事件類型。
$('#clickme').unbind('click').click(fireclick);
$('#clickme').unbind().click(fireclick);
使用命名空間確保您不會刪除任何其他偵聽器:
$('#clickme').off('click.XXX').on('click.XXX', fireclick);
只要沒有其他代碼使用XXX
,您就可以確定您沒有搞砸一些您不知道的其他行為。
您可以使用 jQuery 函數unbind刪除第一個事件:
var fireClick = function() { alert('Wuala!!!') };
$('#clickme').click(fireclick);
$('#clickme').unbind('click', fireClick); // fireClick won't fire anymore...
$('#clickme').click(fireclick); // ...but now it will
我會嘗試消除額外的調用,但是如果沒有 tyhat,您可以確保每次都調用這兩個:
$('#clickme').unbind('click', fireclick);
$('#clickme').click(fireclick);
$(document).off('click', '#clickme').on('click', '#clickme', fireclick);
您應該使用 setInterval。 問題是您不能同時彈出兩個警報。 第一個必須先關閉,否則第二個無法出現在屏幕上...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.