2010-11-22 8 views
1

ねえ、 簡単な質問:2つの$(window).load(function(e){機能を1つのウェブサイトで使用するのは実際には可能なのでしょうか?jqueryとjavascript:2つのロード関数?

私はいくつかのjqueryと<script>タグを保持しているheader.phpを持っています - $(window).load(function(e){はそれの一部です。その下にもう1つのタグがあり、外部の.jsファイルにリンクしています。もう1つは$(window).load(function(e){です。

これは許可されていますか?

ありがとうございました!

答えて

4

はい。すべてのload()宣言は、単に既存のハンドラに追加されます。 (load()ショートカットの実際の仕事を処理する関数である)docs on .bind()から

イベントが要素に到達すると、要素のそのイベント・タイプにバインドされたすべてのハンドラが起動されます。複数のハンドラが登録されている場合、それらは常にバインドされた順に実行されます。すべてのハンドラが実行されると、イベントは通常のイベント伝搬経路に沿って継続します。

1

​​関数(および他のイベント関連関数)は、イベントが発生したときにイベントハンドラキューに配置する関数を受け入れます。

質問に直接答えるには、はい。

0

どうすれば可能ですか?

ページが完全に読み込まれたときに呼び出すイベントが複数あるとします。 JavaScriptでこれを調べて、その概念についてもっと知り、それを簡単に理解しやすいようにしておきましょう。

var pageLoadEvents = []; 

ページがロードされたときに呼び出すすべてのイベントを保持する配列を作成しました。

pageLoadEvents.push(function() { 
    alert("hello!"); 
}) 

そして:

pageLoadEvents.push(function() { 
    alert("How are you doing?"); 
}) 

さて、あなたは、ページの読み込みに引き上げるしたいすべてのイベントを定義しているし、それらのすべてがpageLoadEvents配列です。ここで、私たちは私たちの最後のピースを書く:

window.onload = function() { 
for(var index=0; index<pageLoadEvents.length; index++) { 
    pageLoadEvents[index](); 
} 
} 

我々はpageLoadEvents配列に保つすべてのイベントを1つずつ実行されます。

load$(window)と呼び出すたびに、loadで定義したコンテンツ(例:function(e){..})を配列に保持し、最後にそれぞれを実行します。

関連する問題