我将尝试用一个简单的代码来解释这个问题。
var fireClick = function() { alert('Wuala!!!') };
$('#clickme').click(fireclick);
$('#clickme').click(fireclick);
所以现在它显然会发出2次警报,但我只需要发出一次警报。尝试了很多方法,但没有结果。
谢谢。
我将尝试用一个简单的代码来解释这个问题。
var fireClick = function() { alert('Wuala!!!') };
$('#clickme').click(fireclick);
$('#clickme').click(fireclick);
所以现在它显然会发出2次警报,但我只需要发出一次警报。尝试了很多方法,但没有结果。
谢谢。
Answers:
从jQuery 1.7开始,您应该使用off来删除事件处理程序,然后使用on来添加它们,尽管您仍然可以使用click
简写形式。
$('#clickme').off('click').on('click', fireclick);
$('#clickme').off().on('click', fireclick);
原始答案:
如果要替换所有单击处理程序,请先调用不带函数参数的取消绑定。如果要替换所有事件处理程序,请不要指定事件类型。
$('#clickme').unbind('click').click(fireclick);
$('#clickme').unbind().click(fireclick);
$('#clickme').off('click').on('click', fireclick);
或简单地说$('#clickme').off('click').click(fireclick);
。
使用名称空间来确保您不会删除任何其他侦听器:
$('#clickme').off('click.XXX').on('click.XXX', fireclick);
只要没有其他代码使用XXX
,就可以确保没有弄乱您不知道的其他行为。
$(document).off('click', '#clickme').on('click', '#clickme', fireclick);