jQuery.one 监听多个事件
jQuery.one listening multiple events
jQuery 的 $.fn.one
应该在触发事件后关闭,并且侦听器有 运行 脚本。
但是,如果它正在侦听多个事件,则不会在其中一个事件触发后关闭所有侦听的事件。
使用此事件侦听器:
var transitionend = "webkitTransitionEnd msTransitionEnd transitionend";
$( "foo" ).one( transitionend , function(){
foo.bar();
} );
foo.bar()
方法将在 chrome 中执行 2 次,因为 webkitTransitionEnd
transitionend
都触发了。
我正在尝试实现一个 优雅 解决方案,在该解决方案中触发其中一个监听方法会关闭监听器中的所有其他方法。
我认为最好的办法是在事件触发后手动删除绑定?
类似的东西:
var transitionend = "webkitTransitionEnd msTransitionEnd transitionend";
$( "foo" ).on( transitionend , function(){
foo.bar();
$(this).off(transitionend);
} );
编辑:
如果你正在寻找一个看起来更优雅的解决方案(假设你需要经常做这种事情),看起来有人已经将上面的内容包装到另一个 Stack Overflow 答案的可重用函数中:
还有:
jQuery's One - Fire once with multiple event types 似乎是同一个问题,因此可能会有一些其他有用的答案。
jQuery 的 $.fn.one
应该在触发事件后关闭,并且侦听器有 运行 脚本。
但是,如果它正在侦听多个事件,则不会在其中一个事件触发后关闭所有侦听的事件。
使用此事件侦听器:
var transitionend = "webkitTransitionEnd msTransitionEnd transitionend";
$( "foo" ).one( transitionend , function(){
foo.bar();
} );
foo.bar()
方法将在 chrome 中执行 2 次,因为 webkitTransitionEnd
transitionend
都触发了。
我正在尝试实现一个 优雅 解决方案,在该解决方案中触发其中一个监听方法会关闭监听器中的所有其他方法。
我认为最好的办法是在事件触发后手动删除绑定?
类似的东西:
var transitionend = "webkitTransitionEnd msTransitionEnd transitionend";
$( "foo" ).on( transitionend , function(){
foo.bar();
$(this).off(transitionend);
} );
编辑: 如果你正在寻找一个看起来更优雅的解决方案(假设你需要经常做这种事情),看起来有人已经将上面的内容包装到另一个 Stack Overflow 答案的可重用函数中:
还有: jQuery's One - Fire once with multiple event types 似乎是同一个问题,因此可能会有一些其他有用的答案。