jQuery文档就绪函数

时间:2011-04-22 09:38:52

标签: jquery jquery-ui document-ready

以下jQuery代码段的最终结果是否相同?

代码段1:

$(function() { alert('test!'); });

代码段2:

$(document).ready(function() { alert('test!'); });

换句话说,$(function(){})只是$(document).ready(function() { });的缩写吗?

我问的原因是因为我们在使用jQuery和jQuery UI构建的小应用程序中看到了一些奇怪的问题。有时,通过单击按钮执行表单提交操作时,浏览器窗口将冻结。我们仍然可以使用底层浏览器窗口(启动弹出窗口的窗口),直到我们在那里执行某些操作。用户只能通过强制关闭浏览器(显然是Internet Explorer)继续。我们怀疑这与Acrobat PDF插件有关,但我只是在这里查看所有角度,因为我发现this issue似乎表现出类似的行为。

7 个答案:

答案 0 :(得分:11)

以下所有三种语法都是等效的:

$(document).ready(handler)
$().ready(handler) (this is not recommended)
$(handler)

别名jQuery命名空间

使用其他JavaScript库时,我们可能希望调用$ .noConflict()以避免名称空间困难。调用此函数时,$快捷方式不再可用,每次我们通常写$时都会强制我们编写jQuery。但是,传递给.ready()方法的处理程序可以接受一个参数,该参数传递给全局jQuery对象。这意味着我们可以在.ready()处理程序的上下文中重命名对象,而不会影响其他代码:

jQuery(document).ready(function($) {
  // Code using $ as usual goes here.
});

答案 1 :(得分:8)

是的,他们是等同的。请参阅此链接以获取参考.ready()

答案 2 :(得分:4)

$(function(){})$(document).ready(function() { })完全相同。

答案 3 :(得分:4)

是的,这是完全相同的。但是第一个通常用于jquery以便于使用。

$(function() { 
    alert('test!'); 
});

答案 4 :(得分:3)

以下代码也正常工作

$(document).ready(function(){
    alert("success");
});

$(function(){
    alert("succes");
});

答案 5 :(得分:1)

是:

$(document).ready(function() { 
  /* code */
});

......和:

$(function() { 
  /* code */
});

......实际上是相同的,后者通常被称为前者的简写。

如果您想知道为什么它们会产生相同的结果,那么它与jQuery构造函数 - jQuery()函数有关,别名为$() - 及其允许的输入。

构造函数记录在api.jquery.com/jquery/,其两个相关选项概述如下。


  

jQuery( selector [, context ] )

     

接受包含CSS选择器的字符串,然后使用该选择器匹配一组元素。

     

返回一个jQuery对象。

上面的这个选项是你在编写时调用jQuery构造函数的方式:

$(document).ready(function() { /* code */ });

选择document对象并用于构造jQuery object。当DOM完全加载时,该jQuery对象在ready()内调用回调(匿名函数)。


  

jQuery( callback )

     

绑定DOM完成加载时要执行的函数。

     

返回一个jQuery对象。

上面的这个选项是你在编写时调用jQuery构造函数的方式:

$(function() { /* code */ });

回调函数(匿名函数)用于构造jQuery对象,当DOM完全加载时,它被调用。

答案 6 :(得分:0)

编写jQuery Document Ready Snippet的不同方法

$(document).ready(function() { ... }); 
$(function() { ... });
jQuery(document).ready(function() { ... });
jQuery(function() { ... });

http://webiwip.com/interview-questions-answers/jquery-interview-questions/10510