На сайте docs jQuery API для 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 не имеет никакого взаимодействия с селектором выбранных элементов node, исходный код 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 - Undefined:
$().ready(handler)
DEMO
Наконец... на мой вопрос: Почему $().ready(handler)
не рекомендуется?