$(文件)与$(“文件”)
$(document)
和$("document")
之间有什么区别吗?
编辑:也进入.ready()
例如$("document").ready()
$(document)
使用jQuery来包装全局document
对象。
$("document")
试图寻找一个
元素,这在HTML中显然没有意义,因为没有这样的元素,只有元素在标记中表示的根
document
对象。 它的行为方式是因为通过传递jQuery函数一个字符串,你实际上给它一个选择器 。
重新编辑:正如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)
。
您的第一个示例将在JS中搜索名为document的变量或对象。 (小心,这是一个预定义的变量)
第二个将在页面中搜索名为“document”的标签。
var document = 'div#logo'; $(document); //will search for div#logo $('document'); //will search for document
document
是一个预制的全局变量,它是当前HTML文档的表示forms,是window.document
缩写。
正如@BoltClock指出的那样, $("document")
将使用该字符串作为
元素的选择器。