Chrome 不会在 jQuery 动画的回调中执行所有行

Chrome is not executing all lines in callback for jQuery animation

本文关键字:执行 回调 jQuery 动画 Chrome      更新时间:2023-09-26

我有一些代码可以对<div>进行动画处理。当动画完成时,需要做几件事(主要是对各种元素的CSS操作),所以我自然而然地将它们放在jQuery的.animate()提供的回调中;

它的行为与火狐浏览器的预期一样。我无法判断这是否是IE中的问题,因为仍然存在一些CSS问题,无法阻止它在那里正确显示 - 我无法判断是CSS还是我在Chrome上遇到的相同问题。无论如何,目前,我专注于Chrome。

需要注意的一件事是,如果我在未执行的行之前执行console.log,则不会发生这种情况。如果我插入一个断点,然后让它继续,也是如此。

        $sliders.animate($thisSlideConfig, 250, function() {
            $newPg.removeAttr('style');
            $curPg = $newPg;
            $curPgInf = plugin.getPgInf($curPg);
            plugin.setIndTxt();
            load2nav();
            plugin.adjustNavState();
            doCleanup();
        });
线路

和正在运行的线路$newPg.removeAttr('style');

我把那行放在块中的哪个位置或我如何选择$newPg似乎并不重要。

哦,是的,我在Chrome 19.0.1084.52上。

删除 style 属性是不可靠的。它可能不会触发页面重绘(而控制台日志或断点强制它这样做)。相反,请尝试手动调用:

$newPg.style.XYZ = "";

对于您定义的每个样式属性,如果可以列出它们。如果没有,请尝试以下操作:

for( var x in $newPg.style) $newPg.style[x] = "";

这些将触发正确的重绘,并且应该有望解决问题。