平滑锚链接滚动冲突

时间:2013-11-30 20:02:01

标签: jquery

我使用下面的代码在锚链接上进行平滑滚动

jQuery(function() {
  jQuery('a[href*=#]:not([href=#])').click(function() {
    if (location.pathname.replace(/^\//,'') == this.pathname.replace(/^\//,'') && location.hostname == this.hostname) {
      var target = jQuery(this.hash);
      target = target.length ? target : jQuery('[name=' + this.hash.slice(1) +']');
      if (target.length) {
        jQuery('html,body').animate({
          scrollTop: target.offset().top
        }, 1000);
        return false;
      }
    }
  });
});

然而,这与我用来显示信息的一些隐藏div有冲突。这是一个例子。

<div style="display:none;">
<div id="contact-email" >
[gravityform id=15 ajax=true title=false description=false tabindex=20]
</div>
</div>

如果我使用上面的代码,则根本不会显示隐藏的div。

是否可以排除与我隐藏的div对应的锚链接 - 我只有一对..

1 个答案:

答案 0 :(得分:4)

好的解决方案是使用:

$(".scroll").click(function(event){     
        event.preventDefault();
        $('html,body').animate({scrollTop:$(this.hash).offset().top}, 500);
    });

然后使用

<a href="#comments" class="scroll">Scroll to comments</a>

我希望平滑滚动的锚链接。

我只是想知道这段代码的效率和浏览器兼容性。