1

ウィンドウの位置を変更するときに、フラッシュのような効果を豊かにしようとしますが、小さな問題があり、解決できません。

スクリプトを見てください

 $(document).ready(function(){

            $('a.flash').click(function(e) {
                e.preventDefault();
                $('body').fadeOut(1500);
                setTimeout("", 1500);
                window.location=this.href;
            }); 
      });

window.location=this.href1500ms後に実行する必要がありますが、実行されません。理由を説明してもらえますか?alert("something");奇妙なことに、代わりに書き込もうとするとwindow.location=this.href、正常に動作します。理由を説明していただけますか?

ありがとう

4

2 に答える 2

7
$(document).ready(function(){

            $('a.flash').click(function(e) {
                var el = this;
                e.preventDefault();
                $('body').fadeOut(1500);
                setTimeout( function() {  location=el.href }, 1500 );
            }); 
      });

1500ミリ秒後に呼び出されるsetTimeoutの最初のパラメーターとしてコールバック関数を提供することになっています。

于 2010-06-13T17:43:51.997 に答える
3

setTimeout他の言語 のと同等ではありません。将来のある時点で実行されるコードの一部をスケジュールし、ブロックしません。実行はすぐに呼び出しを渡し、続行します。Thread.sleep(1500);setTimeoutsetTimeout

最初のパラメーターは、評価される関数または文字列への参照です。

setTimeout匿名関数を使用した評価を避けて、適切な使用方法については、mederの回答を参照してください。

于 2010-06-13T17:46:15.617 に答える