"未捕获的ReferenceError:$未定义"试图推迟

时间:2017-11-05 01:37:43

标签: jquery pagespeed

我收到" Uncaught ReferenceError:$未定义"我使用延迟时出错。

Q值。如何正确推迟此脚本?代码是

  <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.2/jquery.min.js"></script>
<script>
  $(document).ready(function () {
      $(window).scroll(function () {
          if ($(this).scrollTop() > 600) {
              $('.scrollup').fadeIn();
          } else {
              $('.scrollup').fadeOut();
          }
      });
      $('.scrollup').click(function () {
          $("html, body").animate({
              scrollTop: 0
          }, 600);
          return false;
      });
  });
  </script>
<!--end-->

2 个答案:

答案 0 :(得分:1)

在这种特定情况下,您可以使用setInterval()函数等待jQuery准备就绪。

function start_scripts(){
    $(document).ready(function () {
       $(window).scroll(function () {
           if ($(this).scrollTop() > 600) {
              $('.scrollup').fadeIn();
           } else {
              $('.scrollup').fadeOut();
           }
       });
       $('.scrollup').click(function () {
           $("html, body").animate({
              scrollTop: 0
           }, 600);
           return false;
        });
    });
}

var jQ_interval = setInterval(function(){

    if(typeof jQuery == 'function'){
        clearInterval(jQ_interval);
        start_scripts();
    }

}, 300); // You can change 300 to other delay

但如果有更多代码要执行,我不会推荐这种方法。更好的解决方案是不推迟jQuery,而是推迟其他脚本。

答案 1 :(得分:0)

defer导致该脚本在解析文档之后才会运行。如果它之后的其他脚本依赖于该脚本(在这种情况下,依赖于jQuery),它们也应该添加defer(使用defer时保留加载顺序)否则它们可能会加载< em>之前之前的defer ed脚本。

如果您有依赖于defer ed脚本的内联脚本,则必须将它们移动到外部文件(并添加src&amp; defer),如同内联脚本不能推迟。