Несколько $ (документ) .ready (function () {}) - PullRequest
1 голос
/ 18 мая 2011

Я недавно начал работать в jQuery, и теперь, когда я работаю над проектом, в котором я использую функцию ajax и загружаю одну и ту же библиотеку (я написал) снова и снова. и из-за этого $(document).ready(function(){}) звонит снова и снова. Означает, что одна функция вызывает 4 раза, если я использую, чтобы загрузить ее 4 раза снова и снова.

Я хочу очистить / удалить / выгрузить предыдущую функцию готовности и хочу подготовить новую функцию. Я использую, чтобы примерить $(function(){}) также. но результат тот же. Я пытался получить любую соответствующую / связанную тему. но не смог узнать.

Если я не смог найти это или никто не сможет мне помочь. тогда я думаю, что мне нужно разделить / разбить одну библиотеку на несколько библиотек.

1 Ответ

0 голосов
/ 18 мая 2011

Это работает как задумано, несколько регистраций событий будут запускаться независимо друг от друга.

Однако вы можете обойти это решение: установить флаг, который будет препятствовать выполнению, если вызывается более одного раза.Например, эта страница будет загружать ваш сценарий четыре раза, но регистрация события будет происходить только один раз:

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
  });
}

Обратите внимание, что это можетПроще разделить вашу библиотеку на часть, которая требуется только один раз, и на часть, которая вызывается повторно, и загрузить эту начальную часть только один раз.

...