1

私は最近jQueryで作業を開始しましたが、現在、ajax関数を使用して同じライブラリ(私が書いたもの)を何度もロードしているプロジェクトに取り組んでいます。そのため、$(document).ready(function(){})何度も電話をかけます。4回何度もロードするために使用する場合、1つの関数が4回呼び出されることを意味します。

以前の準備が整った関数を消去/準備ができていない/アンロードし、新しい関数を準備したい。私もよく試着して$(function(){})います。でも同じ結果。それぞれの/関連するトピックを取得しようとしました。しかし、見つけることができませんでした。

私がこれを見つけることができなかった場合、または誰も私を助けることができません. 次に、1 つのライブラリを複数のライブラリに分割/分割する必要があると思います。

4

1 に答える 1

0

これは意図したとおりに機能し、複数のイベント登録が互いに独立して発生します。

ただし、回避策を作成することもできます。複数回呼び出された場合に実行されないようにするフラグを設定します。たとえば、このページではスクリプトが4回読み込まれますが、イベントの登録は1回だけ行われます。

this is your HTML page
<script>
  var alreadyRan = false;
</script>
<script src="yourscript.js?firstload"></script>
<script src="yourscript.js?secondload"></script>
<script src="yourscript.js?thirdload"></script>
<script src="yourscript.js?nextload"></script>
etc.

次に、yourscript.jsで:

if (!alreadyRan) { // we declared alreadyRan in the global scope
  alreadyRan = true; // won't run on further invocations
  // thus the handler will only be registered one time
  $(document).ready(function(){
    // your onready code
  });
}

ライブラリを1回だけ必要な部分と繰り返し呼び出される部分に分割し、その最初の部分を1回だけロードする方が簡単な場合があることに注意してください。

于 2011-05-18T08:34:46.623 に答える