为了避免在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捆绑。
答案 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>