// http://blog.alexmaccaw.com/css-transitions
$.fn.emulateTransitionEnd = function (duration) {
var called = false, $el = this
$(this).one($.support.transition.end, function () { called = true })
var callback = function () { if (!called) $($el).trigger($.support.transition.end) }
setTimeout(callback, duration)
return this
}
6 回答
只是为了好玩,不要这样做!
在Opera 12中使用普通JavaScript进行绑定时,'oTransitionEnd'将起作用:
但是如果你通过jQuery绑定,你需要使用'otransitionend'
如果您使用的是Modernizr或bootstrap-transition.js,您只需进行更改:
你也可以在这里找到一些信息http://www.ianlunn.co.uk/blog/articles/opera-12-otransitionend-bugs-and-workarounds/
W3C CSS Transitions Draft
Webkit
Mozilla
歌剧
Internet Explorer
SO: How do I normalize CSS3 Transition functions across browsers?
我正在使用Pete给出的方法,但我现在开始使用以下方法
或者,如果您使用bootstrap,那么您可以这样做
这是因为它们在bootstrap.js中包含以下内容
请注意,它们还包括一个emulateTransitionEnd函数,可能需要该函数来确保始终发生回调 .
http://blog.alexmaccaw.com/css-transitions
所有现代浏览器now support无前缀的事件:
element.addEventListener('transitionend', callback, false);
适用于最新版本的Chrome,Firefox和Safari . 甚至是IE10 .
如果你只想检测一个转换端,不使用任何JS框架,这里有一个方便的实用功能:
用法:
然后,如果你想在某个时候取消,你仍然可以使用
它对其他事件的使用也很好:)