2016-03-05 3 views
0

Просто загрузите быстрый модальный скрипт, и я попал в стену.jQuery -detecting, если завершена анимация CSS

Тестирование анимации css и все работает отлично. Я могу открыть модальный из ссылки, но когда я пытаюсь открыть то же модальность снова сразу после по какой-то причине

.one("animationend webkitAnimationEnd oAnimationEnd MSAnimationEnd", 
    function(e){ 
     modalBg.removeClass('flex fadeOut animated'); 
     $(this).off(e); 

    }); 

увольняет мгновенно ... Когда я пытаюсь нажать другую ссылку каждый раз, когда он работает отлично. Я попытался установить нулевую переменную modalBg, и она делает трюк, но консоль возвращает ошибку, которая не определена removeClass. Поэтому по какой-то причине modalBg.removeClass('flex fadeOut animated'); все еще запущен.

Вот JSBin

Вот весь код:

$(document).ready(function() { 

$(".modal-link").on("click", function() { 

     attribute = $(this).attr('href'); 
     attribute = attribute.replace('#',''); 
     console.log(attribute); 

     $('.modal-bg[data-modal='+ attribute +']').addClass("flex animated fadeIn"); 
     $('.modal-bg[data-modal='+ attribute +'] .modal').addClass("animated fadeInDown"); 
}); 

$('.modal-close').on('click', function() { 
    modalBg = $(this).closest('.modal-bg'); 
    modalBg.removeClass('fadeIn'); 
    modalBg.addClass('fadeOut'); 
    modalBg.one("animationend webkitAnimationEnd oAnimationEnd MSAnimationEnd", 
    function(e){ 
     modalBg.removeClass('flex fadeOut animated'); 
     $(this).off(e); 

    }); 
    }); 
}); 
+0

Я чувствую, что вы должны использовать JQuery анимации функцию чтобы воспользоваться обработчиком анимации завершения. – Mistergreen

+0

@Mistergreen, это не проблема, он отлично работает с анимацией cfcfece css. Я не могу понять, почему событие запускается, когда я дважды нажимаю на одну и ту же ссылку в строке ... Интересно, когда я нажимаю ссылку в третий раз, он снова работает :) Я не хочу использовать анимации jQuery, которые они довольно медленны, CSS. – CyberFountain

ответ

1

Заменить офф (е) с

$(this).off("animationend webkitAnimationEnd oAnimationEnd MSAnimationEnd");

+0

Отличный @Mistergreen отлично работает сейчас, спасибо много :) – CyberFountain

Смежные вопросы