如果我将两个事件绑定到两个不同对象的主体,我可以单独取消它们吗?

时间:2012-10-08 14:00:18

标签: jquery

我正在捕捉身体上的点击事件以获得灯箱效果。

许多灯箱可以一次打开。

当我关闭其中一个时,我希望他们各自的处理程序死掉。

但是因为他们都被“身体”所束缚,所以一个无约束的召唤,将他们全部解开。

$('body').bind('click', function(){ HelperPopup.mouseup_handler($el, mouse_is_inside);  });

//  .. then later ..

mouseup_handler: function($el, mouse_is_inside) {

    $el.fadeOut(100);
    $('body').unbind('click', HelperPopup.mouseup_handler($el) );
    return false;
  };          
},

谢谢!

1 个答案:

答案 0 :(得分:1)

您有两种选择:命名空间事件类型,以及通过引用处理程序取消绑定。

命名空间事件类型:

$(selector).on('click.mynamespace', somehandler);
...
$(selector).off('click.mynamespace');

通过引用解除绑定:

$(selector).on('click', somehandler);
...
$(selector).off('click', somehandler);

显然你需要保存对你附加的实际处理程序的引用,所以使用匿名函数时不太方便。

更新:更改了答案,以使用推荐的on / off jQuery方法。