Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jqueryfadeout一次又一次地执行回调,为什么会出现这种情况,如何防止这种情况?_Javascript_Jquery_Callback_Children_Fadeout - Fatal编程技术网

Javascript jqueryfadeout一次又一次地执行回调,为什么会出现这种情况,如何防止这种情况?

Javascript jqueryfadeout一次又一次地执行回调,为什么会出现这种情况,如何防止这种情况?,javascript,jquery,callback,children,fadeout,Javascript,Jquery,Callback,Children,Fadeout,我的方法淡出一个div框,并有一个调用方法的回调。。。像这样: function closeWindow(windowIdPrefix, speed) { $("#" + windowIdPrefix + "_ViewPanel").fadeOut(speed, function() { resetWindow(windowIdPrefix); numWindowsOpen--; } ); } fu

我的方法淡出一个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,所以出于某种原因,调用会多次发生。。。有人能解释为什么会发生这种情况吗?

对于与选择器匹配的每个元素,只能调用一次回调。将警报消息直接放入回调时是否会看到多个警报

function() {
    alert('Test');
    resetWindow(windowIdPrefix);
    numWindowsOpen--;
}

问题是numWindowsOpen在那里被减量之前并没有被声明。。。很好的提醒您,在进入更复杂的tihngs之前,请确保查找类似的简单内容。

您也可以发布resetWindow的代码吗?这只是一个警报,但我还是添加了它。如果您坚持使用控制台。log$+windowIdPrefix+\u ViewPanel.length;在淡出线之前你得到了什么?或者,如果您没有安装firebug,请执行警报而不是console.log我得到1。。。因此,它显然应该只调用回调一次。我想知道为什么它会不断地重复这样的回调。对此我不确定。你的代码在我看来很好,所以我猜它是看不见的。你能把一个精简版贴在什么地方让我看看吗?或者发布一个zip?添加警报“测试”;使测试警报一次,无论淡出是否在那里。根据您编写的没有淡出的resetWindow函数,它只执行一次。只有当淡出在那里时,resetWindow才会执行多次