На сайті документації jQuery API для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: 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)
не рекомендується?