Почему «$().ready(handler)» не рекомендуется?

Взято с сайта документации 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
  • Undefinedselector: $().ready(handler)DEMO

Наконец... на мой вопрос: Почему $().ready(handler)не рекомендуется?

88
задан gdoron is supporting Monica 29 May 2012 в 06:26
поделиться