jQuery.one听多个事件

时间:2015-04-14 11:13:10

标签: javascript jquery events javascript-events

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

但是,如果它正在收听多个事件,那么在其中一个事件发生后,它就不会为所有收听的事件关闭。

使用此事件侦听器:

var transitionend = "webkitTransitionEnd msTransitionEnd transitionend";

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

   foo.bar(); 

} );

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

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

1 个答案:

答案 0 :(得分:4)

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

像:

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

编辑: 如果你想要一个更优雅的解决方案(假设你需要做很多这样的事情),看起来有人已将上述内容包装到另一个Stack Overflow回答的可重用函数中:{{ 3}}

此外: https://stackoverflow.com/a/24589200/820822似乎是同一个问题,因此可能会有其他一些有用的答案。