0

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

许多灯箱可以一次打开。

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

但是因为它们都绑定到“身体”,一个 unbind 调用,将它们全部解绑。

$('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;
  };          
},

谢谢!

4

1 回答 1

1

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

命名空间事件类型:

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

通过引用解除绑定:

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

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

更新:更改答案以使用推荐的on/ offjQuery 方法。

于 2012-10-08T14:08:24.850 回答