Безопасно ли вызывать $(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:
Все три следующих синтаксиса эквивалентны:
$(document).ready(handler)
$().ready(handler)
(это не рекомендуется)$(handler)
Существует также
$(document).bind("ready", handler)
, Это ведет себя так же, как метод ready, но с одним исключением: если событие ready уже сработало, и вы пытаетесь.bind("ready")
связанный обработчик не будет выполнен. Готовые обработчики, связанные таким образом, выполняются после любой связанной с другими тремя методами выше.
Да. Вы можете поместить его в функцию, и она будет срабатывать при каждом вызове этой функции.