3

我已将属性添加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>    
4

4 回答 4

3

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> 
于 2012-10-24T08:16:11.017 回答
0

如果您不希望脚本加载到很晚,请将 jquery 脚本移动到 html 页面的底部。然后它将最后加载。

于 2012-10-24T08:14:30.127 回答
0

你需要确保在使用之前加载了$jQuery,所以你不应该推迟加载 jQuery。

如果要延迟加载 jQuery,则需要将使用 jQuery 的 javascript 添加到脚本 onload 成功事件处理程序中。

于 2012-10-24T08:16:11.340 回答
0

您不能使用 $(document).ready(function () {和等待 DOM 已加载的单元,因为该语句是一个 jQuery 符号,它已被延迟且尚不可用。因此,该$变量只能在 jQuery 立即加载时使用。

于 2012-10-24T08:17:20.387 回答