正在取消绑定jQuery事件处理程序

Unbinding jQuery event handlers

本文关键字:事件处理 程序 jQuery 绑定 取消      更新时间:2023-10-13

假设我有两个相同类型的事件处理程序绑定到同一个对象。以下是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')将解除两个事件处理程序的绑定。我知道在原始JavaScript中,您可以将addEventListener()方法分配给引用变量,然后使用它来删除事件侦听器,但我似乎找不到任何关于jQuery如何支持使用引用变量的文档。

我是不是错过了一些简单的东西?

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

您需要使用.off(),就像一样

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