tar*_*ras 73 jquery event-handling
我将尝试用简单的代码解释问题.
var fireClick = function() { alert('Wuala!!!') };
$('#clickme').click(fireclick);
$('#clickme').click(fireclick);
Run Code Online (Sandbox Code Playgroud)
所以现在它会明显提醒2次,但我只需要提醒一次.尝试了很多方法,但没有结果.
谢谢.
tva*_*son 131
在jQuery 1.7中,你应该使用关,以移除事件处理程序,并在添加它们,但你仍然可以使用click简写.
$('#clickme').off('click').on('click', fireclick);
$('#clickme').off().on('click', fireclick);
Run Code Online (Sandbox Code Playgroud)
原始答案:
如果要替换所有单击处理程序,请先调用unbind而不使用函数参数.如果要替换所有事件处理程序,请不要指定事件类型.
$('#clickme').unbind('click').click(fireclick);
$('#clickme').unbind().click(fireclick);
Run Code Online (Sandbox Code Playgroud)
Nei*_*ens 23
使用命名空间以确保不删除任何其他侦听器:
$('#clickme').off('click.XXX').on('click.XXX', fireclick);
Run Code Online (Sandbox Code Playgroud)
只要没有其他代码使用XXX,您可以确定您没有弄乱其他一些您不知道的行为.
mof*_*off 18
您可以使用jQuery函数取消绑定来删除第一个事件:
var fireClick = function() { alert('Wuala!!!') };
$('#clickme').click(fireclick);
$('#clickme').unbind('click', fireClick); // fireClick won't fire anymore...
$('#clickme').click(fireclick); // ...but now it will
Run Code Online (Sandbox Code Playgroud)