Есть ли разница между: $(document)
и $("document")
?
EDIT: также, когда в .ready()
например. $("document").ready()
Есть ли разница между: $(document)
и $("document")
?
EDIT: также, когда в .ready()
например. $("document").ready()
$(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"
, который ничего не выбирает. Четвертый синтаксис ожидает, что документ будет готов, но подразумевает (неправильно), что он ожидает, что изображения станут готовыми.
Если вы говорите о вызове функции .ready()
, она (в настоящее время) не имеет значения.
В обоих случаях аргумент игнорируется.
Вы можете сделать это:
$( "cheese pizza" ).ready(function() {});
Чтобы быть ясным, лучше использовать официально поддерживаемые вызовы .ready()
, которые:
$(document).ready(function(){/*...*/});
и
$(function(){/*...*/});
Когда вы выбираете document
, вы должны использовать $(document)
.
Ваш первый пример wil ищет переменную или объект, называемый документом внутри вашей JS. (будьте осторожны, это предопределенная переменная)
Второй будет искать на странице тег с названием "документ".
var document = 'div#logo';
$(document); //will search for div#logo
$('document'); //will search for document
document
- это готовая глобальная переменная, представляющая собой текущий документ HTML, сокращенный для window.document
.
$("document")
, как отметил @BoltClock, будет использовать эту строку в качестве селектора для элемента <document>
.