jquery - 我是否需要将 application.js 中的每个 Javascript 函数都包含在 $(function() {} 中?

标签 jquery ruby-on-rails-3

我的application.js在外面有这个:

$(function() {
    // My functions are in here, and some of them even work.
}

我剪切并粘贴直到得到一些有用的东西,现在我正在认真学习 jQuery。我知道有点落后。

上面代码的目的是什么,$(function() { }

最佳答案

这是一个 shortcut for :

$(document).ready(function () {

});

这意味着一旦 DOM 完全加载,您的脚本就会运行。这意味着脚本中依赖于现有某些 DOM 节点的任何部分都可以工作。如果您的 .js 文件位于页面顶部,它将在 DOM 节点存在之前执行,这意味着您将尝试使用不存在的东西。 $(document).ready()允许您推迟代码的执行,直到页面准备就绪。

例如,假设您有以下 JavaScript,已加载到 head 的脚本标记中:

$('a').click(function () {
    alert("You can't leave!!!");
    return false;
});

尝试向所有 <a> 添加点击处理程序标签,但没有 <a>标签还没有,所以它不会做任何事情。如果你把它包裹在 $(document).ready() 中它看起来像这样:

$(document).ready(function () {
    $('a').click(function () {
        alert("You can't leave!!!");
        return false;
    });
});

现在只有当文档准备好时才会执行。

要回答标题中的问题,不,您不必将所有内容都包含在 $(document).ready() 中。 - 只是依赖于 DOM 完全加载的代码。

关于jquery - 我是否需要将 application.js 中的每个 Javascript 函数都包含在 $(function() {} 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4199203/

相关文章:

ruby-on-rails - 在过滤器为整个 Controller 分配异常之前

jquery - 浏览器上一个按钮和模式窗口

javascript - Jquery .on ("click") 函数仅触发一次

javascript - 无法使用 Jquery 将 li 追加到 ul 中

JavaScript ajax if then else

jquery - 如何使用 jQuery 将电子邮件地址发送到 Rails 3.2 Controller ?

javascript - 如何从一个框中选择所有字段?

ruby-on-rails - 在 Rails 3 中渲染到任意布局文件

javascript - kaminari 通过 ajax 分页,remote = true 不影响 rails 3 中的 View

ruby-on-rails - I18n : How to check if a translation key/value pairs is missing?