$(文件)与$(“文件”)

时间:2011-01-24 18:59:54

标签: javascript jquery document

$(document)$("document")之间有什么区别吗?

编辑:同时进入.ready()例如$("document").ready()

4 个答案:

答案 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的缩写。

正如@BoltClock指出的那样,

$("document")将使用该字符串作为<document>元素的选择器。