3

当我仔细阅读一个 jQuery 驱动的 JavaScript 源文件时,我看到函数定义如下:

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

$(function {
    ...
});

我理解第一个:我假设它的功能是在下载整个页面后触发,是吗?如果不是请纠正我!

真正让我困惑的是第二个。这是一个匿名函数吗?它是如何/在哪里被调用的?它什么时候被调用(页面加载)?

我想我已经习惯了用方式编写 JavaScript 函数:

function myFunction() {
    ...
}

然后我就在myFunction我需要的时候打电话。这种“旧”方式与 jQuery 的构造相比如何?感谢您帮助我理解这些困惑!

4

1 回答 1

6

第二个函数只是第一个方法的速记方法。两者都为文档的“就绪”事件注册回调。

http://api.jquery.com/ready/

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

$(document).ready(handler)
$().ready(handler) (不推荐这样做)
$(handler)

编辑:当 DOM 可以安全更新时,
该事件实际上会触发。ready该事件将在图像等外部资源完全加载之前引发,但大多数浏览器似乎在调用它之前等待外部 CSS 完成加载,因为脚本通常依赖于布局计算才能完成。简写方法 jQuery 方法非常常见,因为它为脚本提供了一种易于记忆和直接的方法,以便在脚本“准备好”时更改 DOM。

于 2012-09-18T16:49:52.613 回答