С сайта документации API jQuery дляready
Все три из следующих синтаксисов эквивалентны:
- $ (документ) .ready (обработчик)
- $ (). ready (обработчик) (не рекомендуется)
- $ (обработчик)
Выполнив домашнее задание - прочитав исходный код и поигравшись с ним , я понятия не имею, почему
$().ready(handler)
не рекомендуется. Первый и третий способы абсолютно одинаковы, третий вариант вызывает функцию готовности кэшированного объекта jQuery с помощью document
:
rootjQuery = jQuery(document);
...
...
// HANDLE: $(function)
// Shortcut for document ready
} else if ( jQuery.isFunction( selector ) ) {
return rootjQuery.ready( selector );
}
Но функция ready не взаимодействует с селектором выбранных узловых элементов. ready
Исходный код:
ready: function( fn ) {
// Attach the listeners
jQuery.bindReady();
// Add the callback
readyList.add( fn );
return this;
},
Как видите, он просто добавляет обратный вызов во внутреннюю очередь ( readyList
) и не изменяет и не использует элементы в наборе. Это позволяет вам вызывать ready
функцию для каждого объекта jQuery.
Подобно:
- обычный селектор:
$('a').ready(handler)
DEMO - Селектор глупостей :
$('fdhjhjkdafdsjkjriohfjdnfj').ready(handler)
DEMO - Неопределенный селектор:
$().ready(handler)
DEMO
Напоследок ... на мой вопрос: почему $().ready(handler)
не рекомендуется?