我将尝试用一个简单的代码来解释这个问题。
var fireClick = function() { alert('Wuala!!!') };
$('#clickme').click(fireclick);
$('#clickme').click(fireclick);
所以现在它显然会报警2次,但我只需要它报警一次。我试了这么多方法,但都没有结果。
谢谢。
发布于 2009-04-12 11:29:20
从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);
发布于 2014-10-22 17:49:16
使用名称空间以确保不会删除任何其他侦听器:
$('#clickme').off('click.XXX').on('click.XXX', fireclick);
只要没有其他代码使用XXX
,您就可以确信您没有搞砸一些您没有意识到的其他行为。
发布于 2009-04-12 11:30:58
您可以使用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
https://stackoverflow.com/questions/741628
复制相似问题