【问题标题】:jQuery.one listening multiple eventsjQuery.one 监听多个事件
【发布时间】:2015-04-14 11:13:09
【问题描述】:

jQuery 的$.fn.one 应该在事件触发后关闭,并且监听器已经运行了脚本。

但是,如果它正在侦听多个事件,它不会在其中一个触发后关闭所有侦听的事件。

使用这个事件监听器:

var transitionend = "webkitTransitionEnd msTransitionEnd transitionend";

$( "foo" ).one( transitionend , function(){ 

   foo.bar(); 

} );

foo.bar() 方法将在 chrome 中执行 2 次,因为 webkitTransitionEnd transitionend 都会触发。

我正在尝试实现一个优雅的解决方案,其中触发其中一个侦听的方法会关闭侦听器中的所有其他方法。

【问题讨论】:

标签: javascript jquery events javascript-events


【解决方案1】:

我认为您最好的选择可能是在事件触发后手动删除绑定?

类似:

var transitionend = "webkitTransitionEnd msTransitionEnd transitionend";
$( "foo" ).on( transitionend , function(){ 
   foo.bar(); 
   $(this).off(transitionend); 
} );

编辑: 如果您想要一个看起来更优雅的解决方案(假设您需要经常做这种事情),看起来有人已经将上述内容封装到另一个 Stack Overflow 答案上的可重用函数中:https://stackoverflow.com/a/24589200/820822

还有: jQuery's One - Fire once with multiple event types 似乎是同一个问题,所以可能还有一些其他有用的答案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-05
    • 2018-06-01
    相关资源
    最近更新 更多