1

看看这段代码:

$(window).on('load resize scroll', function() {
    console.log('hello');
});

$(window).on('load resize scroll', function() {
    console.log('goodbye');
});

如果在某个时候我想阻止“hello”被控制台记录,但仍然希望“goodbye”被记录,该怎么做?

因为这:

$(window).unbind('load resize scroll');

取消两个日志。

4

2 回答 2

4

使用事件命名空间

事件名称可由事件命名空间限定,以简化移除或触发事件。例如,“click.myPlugin.simple”为这个特定的点击事件定义了 myPlugin 和 simple 命名空间。通过该字符串附加的单击事件处理程序可以使用 .off("click.myPlugin") 或 .off("click.simple") 删除,而不会干扰附加到元素的其他单击处理程序。命名空间类似于 CSS 类,因为它们不是分层的;只有一个名字需要匹配。以下划线开头的命名空间保留给 jQuery 使用。

$(window).on('load.one resize.one scroll.one', function() {
    console.log('hello');
});

$(window).on('load.two resize.two scroll.two', function() {
    console.log('goodbye');
});

然后

$(window).off('load.one resize.one scroll.one');
于 2013-09-25T16:52:06.153 回答
3

命名您的处理程序:

function sayHello() {
    console.log('hello');
}

function sayGoodbye() {
    console.log('goodbye');
}

$(window).on('load resize scroll', sayHello);
$(window).on('load resize scroll', sayGoodbye);

当你想停止打招呼时,只需转动它off

$(window).off('load resize scroll', sayHello);
于 2013-09-25T16:53:41.093 回答