На этом шаге мы рассмотрим вопросы, связанные с использованием различных функций, вызываемых в ответ на возниконовение одного и того же события.
Традиционный способ регистрации обработчиков событий в JavaScript (помимо добавления атрибутов обработчиков непосредственно в разметке HTML) заключается в присваивании функций соответствующим атрибутам элементов DOM. Например, предположим, что определена следующая функция:
function doStuff()
{
// Реализация некоторых действий...
}
Мы можем использовать ее в качестве значения атрибута в разметке HTML:
<body onload="doStuff();">
window.onload = doStuff;
В обоих случаях функция будет вызвана сразу же после загрузки страницы. Преимущество второго подхода состоит в отделении реализации поведения от разметки.
Такой подход может применяться при наличии лишь одной функции. Допустим, что имеется вторая функция:
function doOtherStuff()
{
// Реализация некоторых других действий...
}
Можно попытаться присвоить эту функцию обработчику события загрузки страницы:
window.onload = doOtherStuff;
Однако тем самым отменится первое присваивание. Атрибут .onload может хранить только одну ссылку на функцию, поэтому, используя данный способ, мы не сможем дополнить существующую реализацию поведения.
Механизм на основе $(document).ready() обрабатывает рассматриваемую ситуацию гораздо изящнее. При каждом обращении этот метод добавляет новую функцию во внутреннюю очередь. В результате, когда страница загрузится, будут выполнены все функции. Вызов функций будет происходить в порядке их регистрации.
На следующем шаге мы рассмотрим сокращения в программном коде.