javascript - jQuery 的一个——使用多种事件类型触发一次

标签 javascript jquery events

有没有办法在引发任何事件时触发一次单个函数?

例如,如果我有以下函数:( demo in jsfiddle )

$('input').one('mouseup keyup', function(e){ 
    console.log(e.type);
});

我只想调用该函数一次,而不管哪个事件触发了它。

但是根据docs对于 .one():

If the first argument contains more than one space-separated event types, the event handler is called once for each event type.

因此,目前该函数将为每种事件类型触发一次。

最佳答案

而不是使用 .one , 使用 .on并使用 .off 手动删除绑定(bind).

$('input').on('mouseup keyup', function(e){
    console.log(e.type);
    $(this).off('mouseup keyup');
});

fiddle :http://jsfiddle.net/23H7J/3/


这可以通过命名空间更优雅地完成:

$('input').on('mouseup.foo keyup.foo', function(e){
    console.log(e.type);
    $(this).off('.foo');
});

这允许我们使用单个标识符 (foo) 来删除任意数量的绑定(bind),并且我们不会影响元素可能具有的任何其他 mouseup 或 keyup 绑定(bind)。

fiddle :http://jsfiddle.net/23H7J/41/

关于javascript - jQuery 的一个——使用多种事件类型触发一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24589084/

相关文章:

javascript - 窗口确认确定/取消对话框中的奇怪行为?

javascript - 翻转具有过渡延迟的 div?

javascript - AJAX响应后重新触发javascript默认事件

javascript - 如何使用 jQuery Mobile 确保动态 DOM 元素具有正确的 css

javascript - jQuery 对 Wordpress 内容进行动画处理

javascript - 单击求和、乘法和除法按钮时出现 "NaN"错误

c# - 清除所有事件订阅(克隆链接)

reactjs - react /Redux : Events - state of the art

javascript - 每个循环中未定义的项目

javascript - 执行上下文和返回语句