Урок - jQuery.ready()

Группа вКонтакте
Лицензия: Лицензия Creative Commons.

Метод jQuery.ready() указывает функцию, которая должна быть выполнена, когда полностью загружено DOM-дерево.

Синтаксис метода jQuery.ready().

jQuery.ready(handler)

где

  • handler - функция, которая будет выполнена восле загрузки DOM-дерева.

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

jQuery(document).ready(handler)
jQuery().ready(handler); // не рекомендуется
jQuery(handler)

Использование метода jQuery.on() для события 'ready' является устаревшим с версии jQuery 1.8. Выполнение jQuery.on('ready', handler) ведет себя аналогично методу jQuery.ready(), но если событие уже произошло, то попытка выполнить команду jQuery.on('ready', handler) ничего не даст - обработчки не будет запущен. Однако описанные выше варианты синтаксиса дают возможность выполнить обработчик, даже если обработчик назначился позже собятия загрузки DOM-дерева.

Метод .ready() может быть вызван для jQuery-объекта с селектором document, т.е. селектор может быть опущен:

jQuery(document).ready(function() {
    // Обработчик для ready
});

Также можно назначить обработчик с помощью анонимной функции:

jQuery(function() {
    // Обработчик для ready
});

Если jQuery.ready() вызывается после создания DOM-дерева, то назначенный обработчик вызывается сразу.

Описание метода jQuery.ready().

В JavaScript существует событие load, которое выполняется после разбора HTML-документа, когда загружены все изображения. в большинстве случаев скрипты могут быть запущены, как только DOM-дерево полностью построено. Обработчики переданные в jQuery.ready() будут выполнены именно после построения DOM-дерева, так что это лучшее место для выполнения инициализации собственного функционала. Для сктриптов использующих значения CSS-свойств важно подулючать CSS-файлы перед выполнением скриптов или указывать CSS-свойства в конкретные элементы.

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

Важно:

Как правило метод jQuery.ready() не совместим с атрибутом onload элемента <body>. Если необходимо использовать событие load или не используют jQuery.ready() или используют jQuery.load() для присоединения обработчиков для события load окна или или другого элемента (например изображения).

Псевдонимы jQuery, пространство имен.

Как вы уже замечали у jQuery есть псевдоним (alias) знак доллара ($), т.е. обращение к $ аналогично обращению jQuery.

При использовании сторонних JavaScript библиотек необходимо вызвать $.noConflict(), что бы избежать трудностей с именованием. После вызова $.noConflict() ярлык $ более не доступен для использования и придется писать jQuery вместо $. Однако обработчики назначаемые с помощью jQuery.ready() могут принимать аргумент, через который передается глобальный объект jQuery. Это означает, что мы можем переименовывать объект в контексте метода jQuery.ready(), не затрагивая другой код:

jQuery(function($) {
	// Здесь можно использовать псевдоним $, вместо jQuery
});

Пример

Отобразить сообщение, когда загружен документ.

<!DOCTYPE html>
<html>
<head>
    <style>p { color:red; }</style>
    <script src="http://code.jquery.com/jquery-1.9.1.js"></script>
    <script>
        jQuery(function ($) {
            $("p").text("DOM загружен и готов к использованию.");
        });
    </script>
</head>
<body>
    <p>Документ не загружен.</p>
</body>
</html>