jQuery Scroll:防止锚文本出现在url中

时间:2013-08-19 14:33:08

标签: javascript jquery jquery-click-event

所以我的jQuery滚动在我的页面上运行得很好。 但我想改变一件事。 我不想在网址中显示锚文本。即。 #products或#contactinfo

HTML CODE:

<div>
<a href="#products">Products</a>
<a href="#contactinfo">Contact info</a>
</div>

<div id="products"></div>

<div id="contactinfo"></div>

jQuery代码:

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

        var target = this.hash,
        $target = $(target);

        $('html, body').stop().animate({
            'scrollTop': $target.offset().top
        }, 900, 'swing', function () {
            window.location.hash = target;
        });
    });
});

2 个答案:

答案 0 :(得分:5)

试试这个:

HTML:

<div>
    <span class="link" rel="#products">Products</span>
    <span class="link" rel="#contactinfo">Contact info</span>
</div>

<div style="height:800px;"></div>
<div id="products">products</div>
<div style="height:800px;"></div>
<div id="contactinfo">contact</div>
<div style="height:800px;"></div>

脚本:

$(document).ready(function(){
    $('.link').on('click',function (e) {
        $('html, body').stop().animate({
            'scrollTop': $($(this).attr('rel')).offset().top
        }, 900, 'swing', function () {});
    });
});

Fiddle

答案 1 :(得分:1)

只需在return false;功能的末尾添加click即可。 编辑:可能删除这一行,我的意思是..它确实是你不想要的?显然?

window.location.hash = target;