所以我有一个脚本可以在点击时滚动到一个 anchor 。它似乎不适用于“第一次”点击。它会跳跃,而不是滚动。但在第一次点击后,它会跳转到 anchor 并出现我的菜单,然后所有链接(包括第一个跳转的链接)都可以正常工作。我不确定是什么原因导致的,想知道是否还有其他人有想法?
我有一个 JSFiddle,但在那里工作正常。只有当我在我的网站中实现相同的代码时,它才会发生。
谢谢
上传上面的文件进行测试,同样的事情正在发生。
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/