删除JQuery中的当前事件处理程序?

时间:2014-03-06 04:11:09

标签: javascript jquery

我想在触发事件时删除事件处理程序。我无法使用one(),因为有些情况下我不想删除事件处理程序。这就是我的意思:

$('#a').on('click',function(){
  if(...)
    // remove current event handler
});

编辑:我忘了提及$('#a')附加了其他事件处理程序。我只想删除当前的那个。

3 个答案:

答案 0 :(得分:21)

使用.off(),名称间隔为event names

$('#a').on('click.myevent', function () {
    if (...)
    // remove current event handler
    $(this).off('click.myevent')
});

答案 1 :(得分:9)

取消绑定自身内部的事件处理程序:

$("#a").on("click", function(evt){
    if (...)
    {
        $(this).off(evt);
    }
});

.off()中没有详细记录,但您可以在.unbind()中的“使用事件对象”部分中阅读有关此“第三种形式”的更好解释。

答案 2 :(得分:-1)

请你试试这个:

$('#a').on('click',function(){
  if(...)
   {

   $(this).unbind('click');  or $(this).off('click')
}    

});

绑定和取消绑定是为了向后兼容。您应该打开/关闭以分离或附加事件处理程序

希望这会有所帮助..