我的方法淡出一个 div 框并有一个调用方法的回调......像这样:
function closeWindow(windowIdPrefix, speed) {
$("#" + windowIdPrefix + "_ViewPanel").fadeOut(speed,
function() {
resetWindow(windowIdPrefix);
numWindowsOpen--;
}
);
}
function resetWindow(windowIdPrefix) {
alert("resetting window");
}
当它执行时(单击按钮),我在 resetWindow 中有一个警报,以查看它执行了多少次。
它似乎永远执行,但我没有坐在那里足够长的时间关闭警报窗口来找出答案。
我做了一些研究并阅读了 Jquery 文档:
回调 (可选)函数
动画完成时执行的函数,针对每个动画元素执行一次。
所以我想知道,即使我只淡出 1 个 div,它是否算作 1..为 div 具有的每个子元素加上 1?
从技术上讲,它们是动画的,因为内部元素正在与外部 div 一起淡出,但是如果你在 firebug 中观看 javascript,只有我淡出的外部 div 会改变它的不透明度/显示。
如果这是正在发生的事情,我如何确保回调只执行一次?
编辑:这是numWindowsOpen--;
我在函数之前没有定义 numWindowsOpen 的那一行,所以由于某种原因导致调用多次发生......谁能解释为什么会这样?