Мне нужно определить, завершен ли переход CSS, прежде чем разрешить повторную функцию, чтобы предотвратить испортить поля.
Итак, как у камеры у меня что-то вроде
if (transitionend == true) {
// do stuff
} else {
// do nothing
}
Мне нужно определить, завершен ли переход CSS, прежде чем разрешить повторную функцию, чтобы предотвратить испортить поля.
Итак, как у камеры у меня что-то вроде
if (transitionend == true) {
// do stuff
} else {
// do nothing
}
Приведенный ниже код инициирует событие перехода для любого элемента (ов), который у вас есть в переменной $element. Есть четыре разных названия событий, поскольку я считаю, что они охватывают все несоответствия между браузерами. Замените комментарий "//your event handler" любым кодом, который вы хотите запустить при запуске события.
$element.on('transitionend webkitTransitionEnd oTransitionEnd', function () {
// your event handler
});
Я думаю, что эта ссылка может быть вам полезна.
При завершении переходов происходит одно событие. В Firefox, событие происходит в Opera, OTransitionEnd и в WebKit это webkitTransitionEnd.
el.addEventListener("transitionend", updateTransition, true);
Используйте данные jQuery, чтобы привязать данные состояния к элементу. Используйте булевское значение для "блокировки" событий из происходящего и переверните логическую переменную после завершения перехода. Используйте xram-код для одновременного подключения всех событий перехода между браузерами.
Итак, для вашего примера...
Вы можете создать метод, который будет иметь в виду, когда конец перехода был вызван в последний раз, и таким образом только один раз вызывает обратный вызов.
function transitionEndsOnce($dom, callback) {
var tick = Date.now();
$dom.on('transitionend webkitTransitionEnd oTransitionEnd otransitionend MSTransitionEnd', function(e) {
var diff = Date.now() - tick;
tick = Date.now();
if (diff > 20) { // this number can be changed, but normally all the event trigger are done in the same time
return callback && callback(e);
}
});
}
а затем просто используйте его таким образом
transitionEndsOnce($('...'), function(e){
console.log('transition ends once');
});