单击锚点时,我想进行平滑滚动,但首先我要检查锚链接是否链接到id
。如果只有哈希那么就不要做滚动。
像:
<a href="#">do not scroll</a>
<a href="#anyID">Yes do the scroll</a>
我当前的代码滚动点击每个只有哈希的锚。
请修复我的代码,以便在锚只有哈希
时不会滚动$('a[href^="#"]').click(function (e) {
e.preventDefault();
var target = this.hash;
if (typeof($(target).offset()) != 'undefined') {
$('html, body').animate({
scrollTop: $(target).offset().top - 60
}, 1000);
}
});
答案 0 :(得分:3)
尝试
$('a[href^="#"]').click(function (e) {
e.preventDefault();
var target = $(this.href);
if (target.length && target.is(':visible')) {
$('html, body').animate({
scrollTop: $(target).offset().top - 60
}, 1000);
}
});
答案 1 :(得分:2)
如果您确定每个不仅包含哈希的锚点都存在一个元素,那么您可以将选择器更改为:
$('a[href^="#"][href!="#"]')
尽管如此,明确地测试元素的存在也是好的。
答案 2 :(得分:1)
$('a').click(function(){
var href=$(this).attr('href');
if(href!="#"){
$('html, body').animate({
scrollTop: $(href).offset().top - 60
}, 1000);
}
});