我的方法淡出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为div的每个子元素?
从技术上讲,它们是动画的,因为内部元素正在被外部div淡出,但是如果你在firebug中观看javascript只有外部div我渐渐消失了它的不透明度/显示变化了。
如果发生了这种情况,我该如何确保回调只执行一次?
编辑:这是numWindowsOpen--;
行我没有在函数之前定义numWindowsOpen所以出于某种原因使调用多次发生...有人可以解释为什么这样发生了什么?
答案 0 :(得分:0)
只应为匹配选择器的每个元素调用一次回调。在回调中直接发出警报消息时,您是否看到多个警报?
function() {
alert('Test');
resetWindow(windowIdPrefix);
numWindowsOpen--;
}
答案 1 :(得分:0)
问题是numWindowsOpen在它减少之前没有被声明...好的提醒,以确保你在去更复杂的时间之前寻找类似的简单事物。