Ответ 1
$(document)
использует jQuery для переноса глобального объекта document
.
$("document")
пытается найти элемент <document>
, что явно не имеет смысла в HTML, потому что такого элемента нет, только корневой объект document
, представленный в разметке элементом <html>
. Это ведет себя так, потому что, передавая функцию jQuery строку, вы на самом деле даете ей selector.
Re edit: as patrick dw говорит, что в контексте ready()
нет никакой разницы, а на самом деле с jQuery 3.0 с использованием $(document)
вообще или явно вызывающий ready()
устарел. Из документа :
jQuery предлагает несколько способов подключения функции, которая будет работать, когда DOM готов. Все следующие синтаксисы эквивалентны:
$( handler )
$( document ).ready( handler )
$( "document" ).ready( handler )
$( "img" ).ready( handler )
$().ready( handler )
Как и в jQuery 3.0, рекомендуется использовать только первый синтаксис; другие синтаксисы все еще работают, но устарели. Это связано с тем, что выбор не влияет на поведение метода
.ready()
, что является неэффективным и может привести к неправильным предположениям о поведении метода. Например, третий синтаксис работает с"document"
, который ничего не выбирает. Четвертый синтаксис ожидает, что документ будет готов, но подразумевает (неправильно), что он ожидает, что изображения станут готовыми.