Безопасно ли вызывать $(document).ready() изнутри функции?

Если я использую $(document).ready() обработчик из функции, будет ли он по-прежнему гарантировать, что код внутри него будет выполняться только в том случае, если документ готов, даже если событие готовности документа произошло в прошлом?

3 ответа

Решение

Да.

Из jQuery ready источник функции.

// Catch cases where $(document).ready() is called after the
// browser event has already occurred.
if ( document.readyState === "complete" ) {
    // Handle it asynchronously to allow scripts the opportunity to delay ready
    return setTimeout( jQuery.ready, 1 );
}

Да, это безопасно. У jQuery есть несколько способов установить обработчики, подобные этому, и единственный "небезопасный" - это $(document).bind("ready", handler), Из документов JQuery:

Все три следующих синтаксиса эквивалентны:

  1. $(document).ready(handler)
  2. $().ready(handler) (это не рекомендуется)
  3. $(handler)

Существует также $(document).bind("ready", handler), Это ведет себя так же, как метод ready, но с одним исключением: если событие ready уже сработало, и вы пытаетесь .bind("ready") связанный обработчик не будет выполнен. Готовые обработчики, связанные таким образом, выполняются после любой связанной с другими тремя методами выше.

Да. Вы можете поместить его в функцию, и она будет срабатывать при каждом вызове этой функции.

Другие вопросы по тегам