平滑滚动特定的锚链接

时间:2012-06-22 12:54:08

标签: javascript jquery html scroll smooth-scrolling

我正在使用Google的平滑滚动脚本来显示特定的锚链接#tothetop,而不是仅使用任何#。我在example.js文件中做了这个(你用脚本下载):

更改:

$('a[href*=#]').click(function() { ... });

致:

$('a[href*=#tothetop]').click(function() { ... });

所以现在它只将平滑滚动应用到#tothetop,但我如何将其应用于其他不同的锚链接?例如:#tothetop#tothebottom#gotothepub等? (不要问为什么我没有使用'#',因为这是一个很长的故事,但简而言之 - 它与页面上的另一个脚本冲突) 我试过了:

$('a[href*=#tothetop]','a[href*=#tothebottom]').click(function() { ... });

但这不起作用。 我不太了解Javascript和PHP,但我确信有一种简单的方法可以做到这一点吗?

example.js的完整代码如下:

$(function(){

$('a[href*=#tothetop]').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) {

            var targetOffset = $target.offset().top;

            $('html,body').animate({scrollTop: targetOffset}, 1000);

            return false;

        }

    }

});

});

2 个答案:

答案 0 :(得分:1)

尝试

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

此选择器将匹配href属性以#开头的所有锚点。

您的示例有效,但应该像这样编写

$('a[href*="#tothetop"], a[href*="#tothebottom"]')

请注意值和单引号周围的引号(仅使用一次)。

答案 1 :(得分:1)

我会使用它,因为很明显你用“toTheAnchor”命名你的滚动锚点:

$('body').on('click', 'a[href^=#][href*=to]', function() {});

这应该选择所有以“#”开头的链接,并在单词中包含“to”。