Какое событие jQuery вызывается сразу после $ (document) .ready ()? - PullRequest
4 голосов
/ 18 января 2012

У меня много HTML-кода, сгенерированного на $(document).ready(). У меня простая оконная система. Но не только он генерируется на $(document).ready() - также некоторые элементы HTML (разные файлы JS помещают вещи в $(document).ready()) Я хочу, чтобы моя оконная система была сгенерирована после вызова $(document).ready(). Итак, как мне обработать функцию, которая будет вызвана после завершения всего кода, зарегистрированного в $(document).ready()?

Ответы [ 6 ]

8 голосов
/ 17 июня 2013
  $(window).load(function(){
   //some code after ready 
  });
8 голосов
/ 18 января 2012

Есть еще одно событие, которое запускается позже. это $ (window) .load (); Это срабатывает после загрузки всех ресурсов.

Но, возможно, вы хотите это:

function loadWindowSystem(){
    // load window system here
}

$(document).ready(function(){
    // do some html stuff here

    loadWindowSystem();
})

Таким образом, вы можете разделить ваш код по функциям.

4 голосов
/ 11 октября 2012

Я обычно не рекомендую использовать setTimeout, но вы можете использовать ответ @ jfriend00, чтобы создать более абстрактный подход:

$(document).ready(function() {
    setTimeout(function() {
        $(document).trigger('afterready');
    }, 1);
});

$(document).bind('afterready', function() {
    // call your code here that you want to run after all $(document).ready() calls have run
});
2 голосов
/ 18 января 2012

Если вы хотите, чтобы что-то срабатывало сразу после всех $(document).ready() вызовов, вы можете поместить это один раз в любое место на вашей странице:

$(document).ready(function() {
    setTimeout(function() {
        // call your code here that you want to run after all $(document).ready() calls have run
    }, 1);
});

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

0 голосов
/ 18 января 2012

$(document).ready() вызывается сразу после завершения загрузки DOM.pageLoad() вызывается следующим по таймеру 0, но имейте в виду, что он запускается после каждой частичной обратной передачи.

Редактировать: добавлено примечание - это будет учитываться только в случае использования ASP.NET, упомянутая функциональность pageLoad отличается отJQuery.Подробнее Здесь

0 голосов
/ 18 января 2012

после этой функции ничего не происходит, поэтому, если у вас есть несколько загрузчиков ajax, вы можете только подождать их всех и затем начать рендеринг

РЕДАКТИРОВАТЬ Но мне интересно, почему вы не просто структурируете свой код, чтобы устранить это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...