为什么要声明$(function(){...})?

时间:2012-04-22 05:43:35

标签: javascript jquery

我正在查看的应用程序加载一个外部javascript文件,如下所示:

$(function () {

    // Don't allow browser caching of forms
    $.ajaxSetup({ cache: false });

    var dialogs = {};

    var getValidationSummaryErrors = function ($form) {
        // We verify if we created it beforehand
        ...
        ...
        }
        return errorSummary;
    };

据我所知,该文件设置了一些变量,并声明了一个名为getValidationSummaryErrors的函数。

我不明白为什么这一切都在

之内
$(function () {  ... }

这是为了什么目的?我不能只在没有“$(function(){}”的情况下在平面文件中声明变量和内容吗?

4 个答案:

答案 0 :(得分:7)

$(function() { ... });只是$(document).ready(function() { ... });的缩写,它确保在DOM准备好之前不执行代码,否则一些影响DOM的代码可能无法正常工作。

请参阅http://api.jquery.com/ready/

答案 1 :(得分:3)

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

表示函数将在加载页面(DOM部分)之后运行,而不是在解析代码时运行。这样您就可以确保页面加载速度更快,并且还可以使用所有必要的内容来运行javascript。

答案 2 :(得分:3)

$()jQuery.ready()的快捷方式,它在页面DOM完全加载后执行代码。有时您希望在执行某些操作之前确保文档已准备就绪。

答案 3 :(得分:2)

这是$(document).ready(function(){...})的简明符号。注意:在加载DOM时,jQuery文档就会触发。等待整个页面(包含的图像等)加载。

实际上,您放入<head>的任何脚本都会立即执行,即如果脚本与DOM进行交互,则需要准备就绪。

第三,需要分离关注点。理想情况下,您的javaScript和HTML位于单独的文件中。如果您这样做,您的HTML中根本就没有任何内联脚本标记。