У меня есть модальный ящик, который я открываю с помощью JQuery. Когда вызываются кнопки закрытия, модальный блок закрывается. Все работает отлично, но чем больше я открыть и закрыть окно модальное, тем дольше он принимает для коробки модальной закрыть:JQuery оживляет медленнее каждый вызов
window.closeModal = function() {
modal = $("div.modal-overlay");
windowHeight = $(window).height();
// Until here performance is good
modal.animate({top: windowHeight, }, 800, function() {
// This is the problem
modal.hide();
$("body").css("overflow-y", "scroll");
});
}
Я положил журналы консоли на каждой строке, и все выполняется мгновенно, пока я не попал модальная функция. Каждый раз, когда я открываю модальный режим и нажимаю кнопку закрытия, требуется больше времени, пока не начнется выполнение модального.анимания.
Может ли кто-нибудь пролить свет, пожалуйста.
@EDIT: Я создал jsfiddle, который показывает проблему.
Просто нажмите открытые модальные, затем закройте модальные. Сделайте это 4-5 раз, чтобы увидеть задержка стала больше
@@ EDIT: Что-то очень странное происходит.
хотя openModal выполняется один раз, iframe.load исполняется # раз открывается модальное и закрытые ...
window.openModal = function (url) {
console.log("open start");
modal = $("div.modal-overlay");
modalIframe = $("div.modal-overlay iframe");
windowHeight = $(window).height();
modal.css("bottom", "0");
modalIframe.attr("src", url + "?frame=true");
modalIframe.load(function() {
console.log("open load")
modalIframe.css('height', windowHeight);
modal.show().animate({
top: 0,
}, 800, function() {
$("body").css("overflow-y", "hidden");
});
});
}
Попробуйте уменьшить продолжительность (от 800 до 400), чтобы завершить немного анимации быстрее .. – web2008
лол @ web2008 - это занимает больше времени, каждый раз, когда он Имеет ли это. Это не слишком медленно! – Archer
@ Арчер, точно. Дело не в том, что анимация становится сложной, потому что анимация длится после запуска нового. – Nealv