以下 jQuery 片段的最终结果是否相同?
代码片段 1:
$(function() { alert('test!'); });
代码片段 2:
$(document).ready(function() { alert('test!'); });
换句话说,$(function(){})
只是$(document).ready(function() { });
的简写吗?
我问这个问题的原因是我们在使用 jQuery 和 jQuery UI 构建的小应用程序中发现了一些奇怪的问题。有时,当通过单击按钮执行表单提交操作时,浏览器窗口会卡住。我们仍然可以使用底层浏览器窗口(启动弹出窗口的窗口),直到我们在那里执行一些操作。用户只能强制关闭浏览器(显然是 Internet Explorer)来继续。我们怀疑这与Acrobat PDF插件有关,但我只是在这里检查所有角度,因为我发现this issue这似乎表现出类似的行为。
最佳答案
以下所有三种语法都是等效的:
$(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.
});
关于jQuery 文档就绪函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5754192/