jQuery滚动菜单无法按预期工作

时间:2015-06-16 18:56:20

标签: jquery

我有一个像<a href='#overview'>Overview</a>这样的链接和一个像<section id="overview" class="community"></section>这样的html部分

我有这个jquery代码,可以滚动到我点击链接的那个部分,并且不会在网址或地址栏中提到#overview。

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

我的问题是,它没有...它会滚动到页面底部到该部分顶部的那个部分,#overview出现在网址中我做错了什么以及如何修复这个 ?我期待发生的是当我点击链接时,从链接(位于页面顶部)滚动到该部分的顶部。

问题可能是我的网址如此:site.php?string=aaaa

1 个答案:

答案 0 :(得分:0)

如果可以的话,你可以清理你的html并只处理类,put和.internal-click在你想要这个功能的每个链接上,以及一个类,如概览,对应id (概述)去哪里。这样你就不会重复代码。

<a href='#' class="overview internal-click">Overview</a>

$('.internal-click').click(function() {
    var place_to_go = $(this).attr("class").split(' ')[0];
    $('html, body').animate({
       scrollTop: $('#'+place_to_go).offset().top
    }, 2000);
});

http://jsfiddle.net/drpr3bvp/