Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 我是否需要将application.js中的每个Javascript函数包装在$(function(){}中?_Jquery_Ruby On Rails 3 - Fatal编程技术网

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

Jquery 我是否需要将application.js中的每个Javascript函数包装在$(function(){}中?,jquery,ruby-on-rails-3,Jquery,Ruby On Rails 3,我的application.js外部有这样一个功能: $(function() { // My functions are in here, and some of them even work. } 我剪切和粘贴直到我得到了一些有用的东西,现在我正在认真学习jQuery。我知道有点落后 上面的代码,$(function(){})的目的是什么?它是: 这意味着,一旦DOM完全加载,脚本将运行。这意味着脚本中依赖于某些现有DOM节点的任何部分都将正常工作。如果页面顶部有.js文件,它将在

我的
application.js
外部有这样一个功能:

$(function() {
    // My functions are in here, and some of them even work.
}
我剪切和粘贴直到我得到了一些有用的东西,现在我正在认真学习jQuery。我知道有点落后

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

它是:

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

例如,假设您在头部的脚本标记中加载了以下JavaScript:

$('a').click(function () {
    alert("You can't leave!!!");
    return false;
});
它尝试向所有
标记添加一个单击处理程序,但还没有任何
标记,因此它不会执行任何操作。如果将其包装在
$(document).ready()
中,它看起来如下所示:

$(document).ready(function () {
    $('a').click(function () {
        alert("You can't leave!!!");
        return false;
    });
});
现在,它将仅在文档准备就绪时执行


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

不,您只需要在
$(function(){})中首次加载页面时执行那些语句;


所有函数都可以在其他地方定义。

基本上是在加载主体时运行代码时所做的

让我再详细解释一下

当页面加载时,浏览器从第一行加载到最后一行,当您在
标记中加载jQuery时,由于
位于主体上方,因此在
之前加载

举个例子:

<!DOCTYPE html>
<html>
    <head>
        <script type="x" source="jquery.js" />
        <script type="x">
            $("#my_id").remove();
        </script>
    </head>
    <body>
        <div id="my_id"></div>
    </body>
</html>
写这篇文章有几种方法,主要方法如下:

$(document).ready(function(){
   //Code here will only be run upon document ready.
});
但我更喜欢这样做:

mysite = {}; //Creates a "namespace / Object" for me to work within
mysite.dialog = function(title,message){/*blah*/}
mysite.init = function(){
   //Code here is for the Document Ready state.
   mysite.dialog("hey","the document has been loaded");
}
然后我将其存储在我的
Application.js
文件中,并在
jquery.js

然后在我的文档中,运行以下命令

$(document).ready(mysite.init);

像白天一样清晰。非常感谢!@AKWF没问题-很乐意帮助:)我喜欢罗伯特。我感谢你花这么多时间回答我的问题。谢谢!所以听起来所有绑定到特定动态项目的绑定都需要在里面。谢谢迈克。
mysite = {}; //Creates a "namespace / Object" for me to work within
mysite.dialog = function(title,message){/*blah*/}
mysite.init = function(){
   //Code here is for the Document Ready state.
   mysite.dialog("hey","the document has been loaded");
}
$(document).ready(mysite.init);