为什么我的锚标签没有平滑滚动?

时间:2017-01-31 21:14:00

标签: javascript html

我在头脑中添加了这个

<script type="text/javascript" src="js/index.js"></script>

这是导航到&#39; id =&#34; fillerSix&#34;&#39; div标签。

<h1><a href="#fillerSix">Mohammad Usman Khan</a></h1>

这是id =&#34; fillerSix&#34;链接应该并且确实导航到。

<div id="fillerSix" class="fillerSix">

这是我的index.js文件

<script type="text/javascript">
$('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
            }, 1000);
            return false;
        }
    }
});
</script>

该链接有效,因为它将用户定向到锚点,但没有平滑滚动。

1 个答案:

答案 0 :(得分:2)

index.js中的块可能应该包含在$(document).ready( function(){ /* your code here */ });中,如上面的DanielD所示。

同样,<script></script>文件中不需要.js个标记。这将导致解析错误。

index.js的新内容:

$(document).ready( 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
                }, 1000);
                return false;
            }
        }
    });
});