:$(document)
和$("document")
之间有什么区别吗?
编辑:同时进入.ready()
例如$("document").ready()
答案 0 :(得分:19)
$(document)
使用jQuery来包装全局document
对象。
$("document")
尝试查找<document>
元素,这在HTML中显然没有意义,因为没有这样的元素,只有document
对象在标记中由{{ 1}}元素。它的行为方式是因为通过传递jQuery函数一个字符串,你实际上给它一个selector。
重新编辑:正如patrick dw所说,在<html>
的上下文中没有任何区别,实际上从jQuery 3.0开始使用ready()
或明确调用$(document)
已弃用。来自documentation:
jQuery提供了几种附加在DOM准备就绪时运行的函数的方法。以下所有语法都是等效的:
ready()
$( handler )
$( document ).ready( handler )
$( "document" ).ready( handler )
$( "img" ).ready( handler )
从jQuery 3.0开始,建议只使用第一种语法;其他语法仍然有效但不推荐使用。这是因为选择与
$().ready( handler )
方法的行为没有关系,这是低效的,并且可能导致对方法行为的错误假设。例如,第三种语法适用于.ready()
,它不会选择任何内容。第四种语法等待文档准备就绪,但暗示(错误地)等待图像准备就绪。
答案 1 :(得分:7)
如果你正在谈论调用.ready()
函数,它(目前)没有任何区别。
在这两种情况下,参数都会被忽略。
你可以这样做:
$( "cheese pizza" ).ready(function() {});
要明确的是,最好使用官方支持的.ready()
来电,其中包括:
$(document).ready(function(){/*...*/});
和
$(function(){/*...*/});
实际选择document
时,您应该使用$(document)
。
答案 2 :(得分:1)
您的第一个示例将在JS中搜索名为document的变量或对象。 (小心,这是一个预定义的变量)
第二个将在页面中搜索名为“document”的标签。
var document = 'div#logo';
$(document); //will search for div#logo
$('document'); //will search for document
答案 3 :(得分:0)
document
是一个预先制作的全局变量,它是当前HTML文档的表示形式,是window.document
的缩写。
$("document")
将使用该字符串作为<document>
元素的选择器。