2012-05-04 7 views
1

jQuery関数を2回実行しようとしています。 DOMが準備完了になると、ページが読み込まれます。ほとんどの場合、2回目の呼び出しは必要ではありませんが、しばらくの間それはあります。ここに私のコードです:jQuery:document.ready()とwindow.load()に対して関数を実行

$(document).ready(function() { 
    function someFunction() { 
     alert('function complete'); 
    } 
}); 

$(window).load(function() { 
    someFunction(); 
});​ 

私は間違っていますか?

答えて

4

...関数のスコープは、その外側でなければなりません... はこの試してみてください。

function someFunction() { 
    alert('function complete'); 
} 

$(document).ready(someFunction); 
$(window).load(someFunction);​ 
2

代わりにこれを試してみてください:それのスコープがdocument.readyに制限されているため

function someFunction() { 
    alert('function complete'); 
} 

$(document).ready(function() { 
    someFunction(); 
}); 

$(window).load(function() { 
    someFunction(); 
}); 
+0

をなぜ他の関数を呼び出すだけの関数を渡すのですか?単に呼びたい機能を渡してください! –

+0

@ParthThakkar Google Chromeは関数呼び出しを制限するため、クロスブラウザ開発のための良い方法です。 Google Chromeは、anon関数を使用するようアドバイスします。 – Bloafer

+0

申し訳ありませんが、私はあなたを取得していない - クロムかもしれない(それは私があなたが意味すると思う)関数呼び出しを制限すると思いますか?どうやって?むしろ、なぜ? –

2

someFunction$(window).load内でアクセスすることはできません。 document.readyから取り出し、それをグローバルコンテキストに置きます。あなたは$(ドキュメント).ready()に渡す機能でsomeFunctionを定義している

function someFunction() { 
     alert('function complete'); 
} 

$(document).ready(function() { 
    someFunction(); 
}); 

$(window).load(function() { 
    someFunction(); 
});​ 
関連する問題