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