Подтвердить что ты не робот

Что происходит, когда у вас есть два вызова jQuery $(document).ready в двух файлах JavaScript, используемых на одной и той же странице HTML?

У меня вопрос о jQuery $(document).ready

Скажем, у нас есть HTML-страница, которая включает в себя 2 JavaScript файлы

<script language="javascript" src="script1.js" ></script>
<script language="javascript" src="script2.js" ></script>

Теперь скажем в обоих этих файлах script, мы имеем $(document) следующим образом

Внутри script1.js:

$(document).ready(function(){
    globalVar = 1;
})

Внутри script2.js:

$(document).ready(function(){
    globalVar = 2;
})

Теперь мои Вопросы:

  • Будет ли запущена обе эти готовые функции события?
  • Если да, каков будет порядок их увольнения, поскольку документ будет готов в то же время время для них обоих?
  • Рекомендуем ли этот подход ИЛИ мы должны в идеале иметь только 1 $(document).ready?
  • Является ли порядок выполнения таким же во всех браузерах (IE, FF и т.д.)?

Спасибо.

4b9b3361

Ответ 1

  • Будет ли запущена обе эти готовые функции события?

Да, они оба будут уволены.

  1. какой порядок их увольнения, так как документ будет готов одновременно для обоих?

В том, как они появляются (сверху вниз), потому что готовое событие будет запущено один раз, и все прослушиватели событий получат уведомление один за другим.

  1. Рекомендуем ли этот подход ИЛИ мы должны в идеале иметь только 1 $(документ).ready?

Это нормально, как это сделать. Если вы можете иметь их в одном и том же блочном коде, было бы легче управлять, но все, что с ним связано. Обновление: по-видимому, я забыл упомянуть, вы увеличите размер своего кода JavaScript, если вы сделаете это в нескольких файлах.

  1. Является ли порядок выполнения таким же во всех браузерах (IE, FF и т.д.)?

Да, потому что jQuery берет нормализацию между браузерами.

Ответ 2

Смотрите здесь: jQuery - плохо иметь несколько $(document).ready(function() {}); и здесь: Учебники: несколько $(document).ready()

  • Да
  • Порядок прикрепления. jQuery внутри поддерживает readyList с Deferred objects.
  • Это часть вопроса вкуса. Наличие одного готового обработчика даст вам хороший обзор всего, что происходит, в то время как несколько (т.е. Один для каждого включенного файла) сделают ваш код более модульным (т.е. Вы можете включить или удалить файл .js и убедиться, что он обеспечивает и связывает свой собственный готовый обработчик).
  • Да - порядок прикрепления.

Ответ 3

Вы можете рассчитывать на выполнение обоих обработчиков в порядке их включения script, а globalVar - 2 после второй ссылки script в любом текущем браузере.

Ответ 4

Если вам нужен полный контроль, я настоятельно рекомендую только один $(документ).ready();

Если вы загружаете частичные части HTML через ajax, а ответ ajax включает в себя $(document).ready(); - script и вы хотите запустить $(document).ready( ); от script1.js, script2.js и т.д. в обратном вызове ajax. Вы должны дублировать PLENTY кода....

Удачи!

/$(window).ready(); ;)

Ответ 5

  • Оба будут запущены.
  • Значение переменной будет равно 2, когда все пыль уладится.
  • Главное, что не рекомендуется - использовать 2 разных JS файла, так как Google PageSpeed ​​и Yahoo YSlow рекомендует, лучше всего иметь все ваши Javascript-коды в том же файле. насколько явным образом обработчики событий, ну, честно говоря, я не вижу причин, почему это сделать, и это сделает вашу читаемость кода более lousier.
  • У меня нет ответа.