У меня есть модальное поле, которое начинается с класса «hidden», который делает модальным display: none;
(чтобы невидимый модальный не захватывал щелчки мыши)
Чтобы исчезнуть в модальном я делаю
jQuery('#modalID').toggleClass('hidden'); <-- Makes the modal display: block; by removing the "hidden" class
jQuery('#modalID').fadeTo(.3, 1.0);
Который работает отлично. Проблема заключается в том, когда я пытаюсь снова включить «скрытый» класс после исчезновения (чтобы он отображался:нет: снова). Когда я пытаюсь переключить» скрытый » класс в fadeto callback, модальный просто исчезает мгновенно. Вот мой код
jQuery('#modalID').fadeTo(.3, 0, function(){
jQuery('#modalID').toggleClass('hidden'); <-- *should* make the modal display:none AFTER fading it out....
});
Я пытался явно добавить класс в обратный вызов fadeTo
jQuery('#modalID').fadeTo(.3, 0, function(){
jQuery('#modalID').addClass('hidden');
});
и даже пытался полностью игнорировать обратный вызов и просто помещать команды обратно…
jQuery('#overlayID').fadeTo(.3, 0); jQuery('#overlayID').toggleClass('hidden');
Как удалить модальное значение, а затем добавить класс «hidden» обратно в модальные послесловия?
Проблема связана с вашим
duration
параметром. Он дается в миллисекундах, поэтому ваша настройка.3
означает0.0003
секунды. Следовательно увядание появляется мгновенно, и обратный вызов немедленно срабатывает.Чтобы исправить это, предположительно, вы хотите, чтобы анимация длилась 0,3 секунды, поэтому значение должно быть
300
. Попробовать это:Также обратите внимание, что можно просто использовать
fadeOut()
и избегать использования второго параметра непрозрачности.