你如何解释jQuery(document).ready()?

时间:2012-04-26 09:10:49

标签: jquery

因此jQuery()是一个函数,而document是一个对象,用作jQuery()函数的参数。

我想,jQuery(document)函数会返回一个对象,它有一个ready()方法吗?这是对的吗? jQuery(document)返回什么样的对象?

4 个答案:

答案 0 :(得分:3)

jQuery使用了很多魔法(例如,为了避免使用new)。

jQuery(...)总是创建一个新的jQuery对象,包含零个或多个传递给它的元素(取决于参数)。

jQuery有一个ready方法,所以你可以在任何jQuery对象上调用它。如果您使用$().ready()$(document).ready()$('whatever').ready()并不重要 - 它将始终执行相同的操作:

ready: function( fn ) {
    // Attach the listeners
    jQuery.bindReady();

    // Add the callback
    readyList.add( fn );

    return this;
},

如您所见,this仅返回链接 - 函数的实际逻辑根本不使用它。

答案 1 :(得分:1)

  

jQuery(document)返回什么样的对象?

返回jQuery object

  

jQuery对象包含一个文档对象模型(DOM)元素的集合,这些元素是从HTML字符串创建的或从文档中选择的。

此处记录了jQuery方法本身:http://api.jquery.com/jQuery/#jQuery1

  

此函数的第二个和第三个公式使用一个或多个已经以某种其他方式选择的DOM元素创建一个jQuery对象。此工具的一个常见用途是在已传递给回调函数的元素上调用jQuery方法...

jQuery(...)函数通常也缩写为$(...),如:

$(document)

基本上它是第一个进入jQuery库的常见钩子。你会经常看到它以这种方式使用:

$(document).ready(function() {
  // This code gets called once the document has finished loading
  // to the point where you'd want to use the jQuery library against the DOM
});

以下是.ready方法的文档:

  

虽然JavaScript在呈现页面时提供了用于执行代码的加载事件,但在完全接收到所有资产(如图像)之前,不会触发此事件。在大多数情况下,只要完全构造DOM层次结构,就可以运行脚本。传递给.ready()的处理程序保证在DOM准备好后执行,所以这通常是附加所有其他事件处理程序并运行其他jQuery代码的最佳位置......

答案 2 :(得分:1)

参考jQuery文档:

http://api.jquery.com/jQuery/ - 您对jQuery( element )函数的jQuery版本感兴趣。它将您传递的元素包装在新的jQuery对象中。然后,该对象包含一个.ready()方法,您可以将事件处理程序作为函数传递。

答案 3 :(得分:1)

如果您使用typeof文档,您将获得对象,因此jQuery(文档)将提供文档的jQuery对象。

您可能已经像$(this)那样将其视为jQuery对象。使用javascript关键字,我们可以调用所有dom方法/属性,但不能调用jQuery方法和属性,类似于$(this)我们可以调用所有jquery方法/属性,但不能调用基本的dom方法和属性。

现在$(document).ready()意味着让dom对象文档将其转换为jQuery对象并为其附加就绪函数。

以下是我在chrome控制台中给出的一些命令,可以解释它。

typeof document
"object"

$(document).ready
function (a){e.bindReady(),A.add(a);return this}

document.ready
undefined

这里显示undefined的document.ready明确表示dom和$(document)已经不知道。在jquery的帮助下显示它的定义