JQuery滚动到锚定代表奇怪

时间:2015-03-11 10:45:22

标签: javascript jquery html css

所以我有一个脚本可以在点击时滚动到一个锚点。它似乎没有工作在"第一"点击下降。它会跳,而不是滚动。但在第一次点击后,它会跳转到锚点并显示我的菜单,然后所有链接(包括跳过的第一个链接)都能正常工作。我不确定会导致这种情况,并且想知道其他人是否有想法?

我有一个JSFiddle,但它在那里工作正常。只有当我在我的网站上实现相同的代码时才会发生。

由于

http://spo.comxa.com/

上传上面的文件进行测试,同样的事情正在发生。

http://jsfiddle.net/reeceheslop/b59fn43e/

$(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;

    });
});

1 个答案:

答案 0 :(得分:2)

您的点击功能似乎嵌套在滚动事件侦听器中,因此我假设在滚动某些内容之前不会调用它。尝试将其与文档就绪功能一起移到外面,如下所示:

document.addEventListener('scroll', function (e) {
    var newPos = (window.scrollY * -1) / 5
    document.getElementById("header").style.backgroundPosition = "center " + newPos + "px";

var startY = 300;

$(window).scroll(function(){
    checkY();
});

function checkY(){
    if( $(window).scrollTop() > startY ){
        $('.fixednav').slideDown();
    }else{
        $('.fixednav').slideUp();
    }
}


checkY();

});

$(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;

    });
});
});