Взято с сайта документации jQuery APIдля ready
Все три следующих синтаксиса эквивалентны:
- $(document).ready(handler)
- $( ).ready(handler) (это не рекомендуется)
- $(handler)
После выполнения домашнего задания — чтения и игры с исходным кодомя понятия не имею, почему
$().ready(handler)
не рекомендуемые. Первый и третий способы абсолютно одинаковы, третий вариант вызывает функцию ready для кэшированного объекта 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)
не рекомендуется?