Javascript 拥有平滑滚动到id';s、 是否希望为特定id添加异常
此处的JavaScript将平滑滚动到所有哈希链接。我需要下面的JavaScript忽略Javascript 拥有平滑滚动到id';s、 是否希望为特定id添加异常,javascript,jquery,ajax,Javascript,Jquery,Ajax,此处的JavaScript将平滑滚动到所有哈希链接。我需要下面的JavaScript忽略id=nav及其产生的哈希链接/#navid=nav用于菜单响应,当下面的JavaScript命令它时,它会中断菜单 有人能告诉我如何在下面的JavaScript中忽略一个特定的id吗 我还制作了一个HTML演示,你可以在下面看到 .top{ 位置:固定; 排名:0; } a{ 左边距:20px; 显示:块; } #导航{ 高度:800px; 背景色:#777; 显示:块; } #测试1{ 高度:800px
id=nav
及其产生的哈希链接/#nav
id=nav
用于菜单响应,当下面的JavaScript命令它时,它会中断菜单
有人能告诉我如何在下面的JavaScript中忽略一个特定的id吗
我还制作了一个HTML演示,你可以在下面看到
.top{
位置:固定;
排名:0;
}
a{
左边距:20px;
显示:块;
}
#导航{
高度:800px;
背景色:#777;
显示:块;
}
#测试1{
高度:800px;
背景色:#ccc;
显示:块;
}
#测试2{
高度:800px;
背景色:#111;
显示:块;
}
$(函数(){
$('a[href*=“#”]:不是([href=“#”]”)。单击(函数(){
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(目标长度){
$('html,body')。设置动画({
scrollTop:target.offset().top-80
}, 500);
返回false;
}
}
});
});
将这一行添加到JavaScript的第二行之后:
if($(this).attr("href") == "#nav") return;
看起来是这样的:
$(function() {
$('a[href*="#"]:not([href="#"])').click(function() {
if($(this).attr("href") == "#nav") return;
//... Rest of code
这是如何工作的检查单击链接的
href
属性值是否为“#nav”
。如果是,函数将返回false
,并且不会执行。只需在选择器中添加条件,或与.not选择器组合,如下所示
.top{
位置:固定;
排名:0;
}
a{
左边距:20px;
显示:块;
}
#导航{
高度:800px;
背景色:#777;
显示:块;
}
#测试1{
高度:800px;
背景色:#ccc;
显示:块;
}
#测试2{
高度:800px;
背景色:#111;
显示:块;
}
$(函数(){
$('[href=“#nav”]')。单击(函数(e){e.preventDefault;返回false;})//如果不想转到顶部,请使用此行。就个人而言,如果锚的基本功能被删除,我不会使用锚。
$('a[href*=“#”]:不是([href=“#”]”)。不是('[href=“#”]”)。单击(函数(){
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(目标长度){
$('html,body')。设置动画({
scrollTop:target.offset().top-80
}, 500);
返回false;
}
}
});
});
为什么不使用条件来检查您不想滚动到的特定哈希?也会提高可读性。这不会像单击导航链接那样工作,它仍然会进入页面顶部,即使滚动不顺畅。脚本未应用。如果你不想滚动,为什么要使用锚?你当然可以默认它(我将编辑答案)。我不知道OP为什么使用锚,只是想指出它。Tyvm。我添加了一个阻止默认值,并对此进行了评论:)。嘿,大家好,非常感谢你们的帮助。与其他解决方案一样,这在技术上是可行的,但它似乎禁用了散列,而不是js的效果。如果没有my js,单击哈希会通过css[预期效果]显示响应的nav,而使用my js,哈希只会滚动,使用您的修复程序,它似乎会一起删除哈希的效果,单击则不需要任何帮助!这在技术上是可行的,但对我来说仍然不可行,因为它似乎禁用了散列,而不是js的效果。如果没有my js,单击哈希会通过css[预期效果]显示响应nav,使用my js,哈希只会滚动,使用您的修复程序,它似乎会一起删除哈希的效果,单击什么也不做。@TaylorOsborn好的,我已经更新了我的答案。请你再试一次好吗?很好。谢谢,没问题。很高兴我能帮忙!