javascript - JQuery 滚动到 anchor 表演奇怪

标签 javascript jquery html css

所以我有一个脚本可以在点击时滚动到一个 anchor 。它似乎不适用于“第一次”点击。它会跳跃,而不是滚动。但在第一次点击后,它会跳转到 anchor 并出现我的菜单,然后所有链接(包括第一个跳转的链接)都可以正常工作。我不确定是什么原因导致的,想知道是否还有其他人有想法?

我有一个 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;

    });
});

最佳答案

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

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;

    });
});
});

关于javascript - JQuery 滚动到 anchor 表演奇怪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28984480/

相关文章:

javascript - 如何在javascript中找到对象的长度?

javascript - 将脚本添加到 DOM 后,JQuery 无法在带有 PhantomJS 的 Watir 中使用

javascript - window.setInterval() 的 dojo.hitch() 范围

javascript - Hook 到网页的 window.onload 的更干净的方法?

javascript - jquery slideToggle 在 ContentPlaceHolder 中不起作用

javascript - 删除按钮不在表格上工作

html - CSS 导航栏下拉菜单在 Chrome 中不起作用

javascript - 等到所有脚本都完成后再启用按钮

javascript - 未定义源必须以 "https://"或 "//"开头

javascript - 单击某个链接时,是否可以自动打开标签页?