$ (документ) против $( "document" )

Есть ли разница между: $(document) и $("document")?

EDIT: также, когда в .ready() например. $("document").ready()

Ответ 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", который ничего не выбирает. Четвертый синтаксис ожидает, что документ будет готов, но подразумевает (неправильно), что он ожидает, что изображения станут готовыми.

Ответ 2

Если вы говорите о вызове функции .ready(), она (в настоящее время) не имеет значения.

В обоих случаях аргумент игнорируется.

Вы можете сделать это:

$( "cheese pizza" ).ready(function() {});

Чтобы быть ясным, лучше использовать официально поддерживаемые вызовы .ready(), которые:

$(document).ready(function(){/*...*/});

и

$(function(){/*...*/});

Когда вы выбираете document, вы должны использовать $(document).

Ответ 3

Ваш первый пример wil ищет переменную или объект, называемый документом внутри вашей JS. (будьте осторожны, это предопределенная переменная)

Второй будет искать на странице тег с названием "документ".

var document = 'div#logo';
$(document); //will search for div#logo
$('document'); //will search for document

Ответ 4

document - это готовая глобальная переменная, представляющая собой текущий документ HTML, сокращенный для window.document.

$("document"), как отметил @BoltClock, будет использовать эту строку в качестве селектора для элемента <document>.