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