是否可以在Asp.Net MVC中围绕ScriptBundle包装单个jQuery文档就绪事件?

时间:2015-01-06 14:45:55

标签: jquery asp.net-mvc bundling-and-minification

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

以下每个文件都包含围绕JavaScript代码的 $(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(){,另一个只包含一个右括号。然后将这些文件添加到开头和结尾现有的捆绑包,但是有更好的方法吗?

已经要求

A similar question进行CoffeScript文件串联,但我无法轻松地将解决方案转换为Asp.Net捆绑。

1 个答案:

答案 0 :(得分:2)

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

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

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

    return {
        init: init
    };
}());

对所有文件执行上述操作,然后在需要它的任何页面上执行上述操作,或者如果要在每个页面上运行,请在_Layout页面中执行以下操作

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