脚本不起作用(但在其他网站上正常工作)

时间:2016-08-02 10:08:20

标签: javascript jquery html css

好的,这可能是一个愚蠢的问题,但是,我会问。当你在滚动时在页面上传递一个点时,我试图制作一个div棒。我有这个脚本:

<script type="text/javascript">
$(document).ready(function() {
       var s = $("#sticker");
       var pos = s.position();                    
         $(window).scroll(function() {
       var windowpos = $(window).scrollTop();
         if (windowpos >= pos.top + 335) {
           s.addClass("stick");
      } else {
          s.removeClass("stick"); 
      }
   });
});
</script>

在我的某个网站上运行正常。但现在我在一个新网站上尝试它。每当我在控制台日志中收到错误时说:TypeError: $ is not a function当我查看代码中的错误时,会突出显示$(document).ready(function() {部分。

如果我删除了$(document).ready部分和});,则告诉我var s = $("#sticker");部分是$ is not a function

我试过了

<script type="text/javascript">
 jQuery(document).ready(function() {
       var s = $("#sticker");
       var pos = s.position();                    
         $(window).scroll(function() {
       var windowpos = $(window).scrollTop();
         if (windowpos >= pos.top + 335) {
           s.addClass("stick");
      } else {
          s.removeClass("stick"); 
      }
   });
});
</script>

然后它会跳过(document).ready部分,但它再次告​​诉我var部分不是函数。

如果删除脚本,我就没有任何控制台日志消息。可能是什么问题呢?我尝试将代码放在headerfooter中,甚至在<div id="sticker">...</div>之前。似乎没什么用。该脚本在其他网站上完美运行......

1 个答案:

答案 0 :(得分:3)

您正在noConfilct模式下运行jQuery。这意味着,jQuery仅由jQuery提供,而不是$。您可以使用ready stateIIFE包装代码,以便$访问jQuery。

就绪状态:

jQuery(document).ready(function($) {
    // access jQuery by '$' inside
});

// this is a shorthand for the above '.ready' creation
jQuery(function($) {
    // access jQuery by '$' inside
});

<强> IIFE:

(function($) {
    // access jQuery by '$' inside
})(jQuery);