Javascript 动画回调不运行
在过去的几个小时里,我一直在研究这个问题,这让我小小的大脑感到困惑 发生的情况是,jqueryanimate动画似乎在动画期间停止,从而停止回调的发生 问题在于,这种情况是断断续续、随机发生的,我无法在代码中找到问题所在。这种情况大约7次发生1次。然而,这种情况可能会在第一次或10次之后发生。 在这种情况下,我真的无法组合一个JSFIDLE,因为它与站点的其他部分链接得如此紧密。相反,我想在这里留下一个链接,指向相关部分。这是一本书。下面显示的代码从第219行开始。如果您查看firebug控制台,您可以看到我在代码运行时所做的日志。您还可以看到,当问题发生时,css属性Javascript 动画回调不运行,javascript,jquery,callback,jquery-animate,Javascript,Jquery,Callback,Jquery Animate,在过去的几个小时里,我一直在研究这个问题,这让我小小的大脑感到困惑 发生的情况是,jqueryanimate动画似乎在动画期间停止,从而停止回调的发生 问题在于,这种情况是断断续续、随机发生的,我无法在代码中找到问题所在。这种情况大约7次发生1次。然而,这种情况可能会在第一次或10次之后发生。 在这种情况下,我真的无法组合一个JSFIDLE,因为它与站点的其他部分链接得如此紧密。相反,我想在这里留下一个链接,指向相关部分。这是一本书。下面显示的代码从第219行开始。如果您查看firebug控制台
left
尚未设置动画直到完成
下图显示了该问题。请注意,cssleft
属性的值不是664px(如果问题没有发生的话)
以下是相关代码
$(".close").live("click", function() {
console.log("--------------------");
console.log("Close button has been clicked");
var toMove = $(this).parent().attr("class").replace("infoBox ", "");
$(this)
.parent()
.fadeOut("fast");
console.log("Setting #" + toMove + " back to default position");
$("#" + toMove)
.removeClass("active")
.addClass("ready")
.delay(100)
.animate({
left: $("#" + toMove).attr("data-left").replace("px", "")
}, 200, function() {
console.log("Animate has finished. Now checking all images are in the right place");
resetAll();
$(".close").remove();
});
});
我的问题有什么问题吗?让我知道,我非常乐意修改和编辑它,使它符合stackoverflow的严格标准
相关的
尝试向图标添加中间状态。只要你点击关闭按钮,类就会从“活动”变为“准备就绪”。例如,添加“moving”,不要让任何其他函数在其状态为“moving”时被调用。当它返回到初始位置时,可以再次将类设置为“就绪”
这对我来说是可行的:“--------------关闭按钮已被点击设置#改进回到默认位置动画已完成。现在检查所有图像是否在正确的位置resetAll功能已完成运行”这似乎大约发生了7次中的1次,但可能或多或少。只需划掉一些明显的事情;当出现问题时,您是否正在交换选项卡或以其他方式进行窗口管理?是否有其他脚本(包括浏览器扩展)正在运行?图标一越过鼠标光标就停止动画。单击闭合十字后,在它返回初始位置时尝试拦截它。“mouseover”处理程序调用
$(this).stop()
$("#" + toMove)
.removeClass("active")
.addClass("moving")
.delay(100)
.animate({
left: $("#" + toMove).attr("data-left").replace("px", "")
}, 200, function() {
console.log("Animate has finished. Now checking all images are in the right place");
resetAll();
$(".close").remove();
})
.removeClass("moving")
.addClass("ready");