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

Leo*_*ang 8 javascript jquery

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

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

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

Aru*_*hny 22

使用.off(),名称间隔事件名称

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

  • @RajaprabhuAravindasamy它是[命名空间事件名称](http://api.jquery.com/on/#event-names) - 用于确保我们不解除绑定其他点击事件处理程序 (3认同)

Gle*_*ane 9

要解除自身内部的事件处理程序:

$("#a").on("click", function(evt){
    if (...)
    {
        $(this).off(evt);
    }
});
Run Code Online (Sandbox Code Playgroud)

.off()中没有很好地记录,但你可以从.unbind()中的 "使用事件对象"一节中读到对这个"第三种形式"的更好解释 .