我已将defer
属性添加到我的jquery脚本中以提高网页性能,但现在我收到错误$ is not defined
。我需要在页面加载时执行JS代码,所以我使用jQuery.ready事件但是在使用defer时它不起作用。
<head>
<script defer="defer" src="@Url.Content("~/Scripts/jquery-1.8.2.min.js")" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function () {
//MyLoadCode
});
</script>
</head>
答案 0 :(得分:2)
defer属性(如果存在)指定在页面完成解析时执行脚本。但是在页面完成解析之前你正在使用jquery变量$
,那时jquery脚本没有被加载并且没有初始化$
。
而不是使用defer属性,将脚本标记从标题移动到页面底部,就在</body>
标记之前。
<html>
<head></head>
<body>
...
<script src="@Url.Content("~/Scripts/jquery-1.8.2.min.js")" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function () {
//MyLoadCode
});
</script>
</body>
</html>
答案 1 :(得分:0)
如果您不希望脚本加载到最晚,则将jquery脚本移动到html页面的底部。然后它将最后加载。
答案 2 :(得分:0)
你需要确保在使用$
之前加载jQuery,所以你不应该推迟加载jQuery。
如果你想推迟加载jQuery,你需要将你的javascript使用jQuery添加到脚本onload success事件处理程序中。
答案 3 :(得分:0)
你不能使用$(document).ready(function () {
并等待DOM已加载,因为该语句是一个jQuery符号,它是deferred但尚未可用。因此,$
变量只能在jQuery立即加载时使用。