3

我正在查看的应用程序加载了一个外部 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

4 回答 4

7

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

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

于 2012-04-22T05:46:12.717 回答
3
$(function () {  ... });

意味着该函数将在页面(DOM 部分)加载后运行,而不是在代码解析时运行。这可以确保页面加载得更快,并且所有必要的东西都可用于运行 javascript。

于 2012-04-22T05:46:03.763 回答
3

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

于 2012-04-22T05:47:55.453 回答
2

这是 $(document).ready(function() {...}) "的简明表示法。注意:当 DOM 被加载时,jQuery 文档准备就绪。它不会等待整个页面(包括图像和之类)加载。

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

第三,需要分离关注点。理想情况下,您的 javaScript 和 HTML 位于不同的文件中。如果您遵循这一点,您的 HTML 中将根本没有任何内嵌脚本标签。

于 2012-04-22T06:54:24.677 回答