使用jQuery 1.11.1顺利滚动JS,但与jQuery 1.12.3打破

时间:2016-05-07 18:49:08

标签: javascript jquery

这个JS创建了一个Smooth滚动,它与jQuery 1.11.1一起工作,但是与jQuery 1.12.3打破了。将它与Wordpress站点一起使用,并且不希望加载两个版本的jQuery。

无法确定要更新的内容,以使其再次发挥作用。

    <!--smooth scroll to anchors-->
    <script>
    (function($){
      var jump=function(e){
        if (e){
          e.preventDefault();                   //prevent the "normal" behavior which would be a "hard" jump
          var mytarget = $(this).attr("href");  //get the target
        }else{
          var mytarget = location.hash;             //sets the target to the anchor part of a URL
        }

      $('html,body').animate(                           //perform animated scrolling
      {
        scrollTop: $(mytarget).offset().top - 100   //get top-position of target-element and set it as scroll target and move down 100px for fixed nav
        }, 1000,function(){                         //scrolldelay: 2 seconds
        location.hash = mytarget;                   //attach the hash (#jumptarget) to the pageurl
        });
      }

      $('html, body').hide()

      $(document).ready(function(){
        $('a[href^=#]').bind("click", jump);

        if (location.hash){
          setTimeout(function(){
            $('html, body').scrollTop(0).show()
            jump()
          }, 0);
        }else{
          $('html, body').show()
        }
      });
    })(jQuery)
    </script>
    <!--End smooth scroll-->

1 个答案:

答案 0 :(得分:0)

jQuery 1.12.x不喜欢a[href^=#]没有引号#。

它会抛出无法识别的表达式错误。

建议始终使用引号。

$('a[href^="#"]').bind("click", jump);

此外,所有jquery版本中的scrolltop都存在问题。 $(..)。offset()为空。当您的href为#或链接到不存在的ID时会发生这种情况。您还应该检查它不是外部链接,然后返回,否则preventDefault将阻止它工作。

请参阅小提琴:https://jsfiddle.net/txau5yLf/