Мой метод выцветает ящик Див, и имеет функцию обратного вызова, который вызывает метод ... как это:JQuery fadeOut выполняет обратный вызов снова и снова, почему это и как я могу предотвратить это?
function closeWindow(windowIdPrefix, speed) {
$("#" + windowIdPrefix + "_ViewPanel").fadeOut(speed,
function() {
resetWindow(windowIdPrefix);
numWindowsOpen--;
}
);
}
function resetWindow(windowIdPrefix) {
alert("resetting window");
}
Когда это исполняет (OnClick кнопки) У меня есть предупреждение в resetWindow, чтобы увидеть, как много раз он выполняется.
Кажется, выполняется навсегда, но я не сидел там достаточно долго, закрывая окна оповещения, чтобы узнать.
Я сделал некоторые исследования и читать в документации Jquery:
CallBack (опционное) Функция
Функция, которая будет выполнена, когда анимация завершается, выполняется один раз для каждого элемента анимационного против.
Так мне было интересно, хотя я только выведении 1 Div, это считается 1 .. плюс 1 для каждого дочернего элемента, DIV имеет?
Технически они анимируются, потому что внутренние элементы исчезают с помощью внешнего div, но если вы смотрите javascript в firebug, только внешний div, который я угасаю, становится прозрачным/отображенным.
Если это то, что происходит, как я могу убедиться, что обратный вызов выполняется только один раз?
Edit: Это была линия numWindowsOpen--;
я не определил numWindowsOpen перед функцией так по какой-то причине, которая делает вызов случается несколько раз ... Может кто-нибудь объяснить, почему это происходит?
Можете ли вы опубликовать код для resetWindow? – Powerlord
Это просто предупреждение, но я добавил его в любом случае. – Matt
Если вы входите в console.log ($ ("#" + windowIdPrefix + "_ViewPanel"). Length); перед линией fadeOut, что вы получаете? (или сделать предупреждение вместо console.log, если у вас нет firebug) – jammus