なぜこれがそのように機能するのかを理解しようとしています。アラート ダイアログがスクリプトの実行をブロックしているという印象を受けました。それでも、スクリプトは、画面を更新せずに、裏で実行が継続されているかのように動作しています。
次のコードを使用します。
function highlightItems(itemA, itemB, msg) {
$(itemA).effect("highlight", {}, 800);
window.alert(msg);
// $(itemB).delay(1);
$(itemB).effect("highlight", {}, 800);
}
アラート ダイアログを閉じると、itemB のハイライト効果が既に行われています。(アラートをすばやく閉じると、効果の末尾をキャッチできます。) アラート ボックスを閉じる前に効果が始まったかのようです。
私が考えることができるのは、エフェクト()が時間自体に使用しているものは何でも、アラート()の呼び出しによってスローされているということだけです。.delay のコメントを外すと、ハイライトは期待どおりに機能します。警告ボックスが閉じられた直後に開始されます。つまり、.delay 関数がエフェクト タイマーを「リセット」するということでしょうか?
これは大きな問題ではありません... ここで何が起こっているのかを理解しようとしているだけです。私の通常の Google スキルは、今日は役に立ちませんでした。
編集- 私が意味することの例については jsfiddle : jsfiddle.net/kA2uV/
編集 2
これは明らかに、同じ .effect が連続して 2 回使用された場合にのみ影響します。別の効果が使用されている場合、問題は発生しません: jsfiddle.net/yXSgu/3/