Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.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
在Asp.NETMVC中,是否可以将单个jQuery文档就绪事件包装在脚本包中?_Jquery_Asp.net Mvc_Bundling And Minification - Fatal编程技术网

在Asp.NETMVC中,是否可以将单个jQuery文档就绪事件包装在脚本包中?

在Asp.NETMVC中,是否可以将单个jQuery文档就绪事件包装在脚本包中?,jquery,asp.net-mvc,bundling-and-minification,Jquery,Asp.net Mvc,Bundling And Minification,为了避免对Asp.Net MVC脚本包中的每个文件多次调用jQuery.ready()事件,是否可以将ready事件包装在整个包中 以下每个文件都包含$(document).ready(function(){}代码,该代码围绕着 bundles.Add(new ScriptBundle("~/bundles/jquery").Include( "~/Scripts/jquery-{version}.js",

为了避免对Asp.Net MVC脚本包中的每个文件多次调用jQuery.ready()事件,是否可以将ready事件包装在整个包中

以下每个文件都包含$(document).ready(function(){}代码,该代码围绕着

bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
                        "~/Scripts/jquery-{version}.js",
                        "~/Scripts/core.js",
                        "~/Scripts/application.js",
                        "~/Scripts/controls.js",
                        "~/Scripts/custom.js"));
我可以创建两个js文件,一个包含$(document).ready(function(){),另一个只包含一个右括号。然后将这些文件添加到现有捆绑包的开头和结尾,但是有更好的方法吗


已经要求CoffeScript连接文件,但我无法将解决方案轻松转换为Asp.Net绑定。

如果您正在查看您编写的JavaScript文件(而不是
jquery-{version}.js
),那么请创建一个可从您在页面上调用的文件外部公开访问的方法

var Application = (function () {
    // All your code

    function init() {
        // All your code that you have inside $(document).ready()
    }

    return {
        init: init
    };
}());
对所有文件执行上述操作,然后在任何需要它的页面上,或者在您的_布局页面(如果要在每个页面上运行)的底部都有以下内容

<script type="text/javascript">
    $(document).ready(function () {
        Application.init();
        // etc for the other files.
    });
</script>

$(文档).ready(函数(){
Application.init();
//等其他文件。
});

你不能简单地这么做。你需要在JS中使用模块模式来实现这一点。这种方法将关闭该文件中其他所有内容的作用域。因此,请注意,如果你在这些文件中确实有一些内容要在文件外访问,你需要将其添加到
return
块中,如init.I这是一个很好的习惯,因为它可以最大限度地减少您在全球空间中的足迹。我想这是JavaScript模块模式吗?有没有您推荐的在线教程可以帮助我提高速度?如果您没有时间发布任何我理解的内容,并感谢您迄今为止的帮助。正确。我没有使用教程,我读了“专家JavaScript”一书马克·E·达格特(MarkE.Daggett)在编写更干净、更具可扩展性的JavaScript方面积累了大量的技能和实践。当然,这是在JavaScript之后:好的部分。太棒了。我来看看。