解绑定jQuery事件处理程序

时间:2013-11-25 18:52:15

标签: javascript jquery

我有一个让我疯狂的jQuery事件绑定问题......

假设我有两个相同类型的事件处理程序绑定到同一个对象。以下是绑定到mousemove对象的window事件的示例。

$('body').on('mousedown', '#uiScrollbar', function(e) {
    var uiWidth = ui.width();
    var mouseStart = e.pageX;
    $(window).mousemove(function(e) {
        e.preventDefault();
        var pixelsMoved = mouseStart - e.pageX;
        ui.width(uiWidth + pixelsMoved);
    });
}).mouseup(function() {
    $(window).unbind('mousemove');
});

所以现在让我说我在窗口中添加另一个mousemove事件,以获得完全不同的东西。显然,$(window).unbind('mousemove')将解除两个事件处理程序的绑定。我知道在原始JS中你可以将addEventListener()方法分配给引用变量,然后使用它来删除事件监听器,但我似乎无法找到有关jQuery如何支持使用a的任何文档参考变量。

也许我错过了一些非常简单的事情?谢谢!

2 个答案:

答案 0 :(得分:3)

var handler = function() {
  alert( "The quick brown fox jumps over the lazy dog." );
};
$( "#foo" ).bind( "click", handler );
$( "#foo" ).unbind( "click", handler );

答案 1 :(得分:1)

您需要使用.off(),例如

$('body').off('mousedown', '#uiScrollbar')