我试图理解为什么它会这样工作。我的印象是警报对话框会阻止脚本执行。然而,脚本的行为就像在幕后继续执行,而不更新屏幕。
拿这个代码:
function highlightItems(itemA, itemB, msg) {
$(itemA).effect("highlight", {}, 800);
window.alert(msg);
// $(itemB).delay(1);
$(itemB).effect("highlight", {}, 800);
}
当我关闭警报对话框时, itemB 的高亮效果已经完成。(如果我足够快地关闭警报,我可以捕捉到效果的结尾。)就好像效果在我有机会关闭警报框之前就开始了。
我能想到的是,任何用于计时的 effect() 都被调用 alert() 所抛弃。如果我取消注释 .delay,突出显示按预期工作:它在警报框关闭后立即开始。那么这是否意味着 .delay 函数“重置”了效果计时器?
这不是一个大问题......我只是想了解这里发生了什么。我平时的 Google 技能今天让我失望了。
编辑- jsfiddle 我的意思的一个例子:jsfiddle.net/kA2uV/
编辑 2
这显然只影响相同的 .effect 连续使用两次的情况。如果使用不同的效果,问题不会发生:jsfiddle.net/yXSgu/3/