Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 拥有平滑滚动到id';s、 是否希望为特定id添加异常_Javascript_Jquery_Ajax - Fatal编程技术网

Javascript 拥有平滑滚动到id';s、 是否希望为特定id添加异常

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

此处的JavaScript将平滑滚动到所有哈希链接。我需要下面的JavaScript忽略
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好的,我已经更新了我的答案。请你再试一次好吗?很好。谢谢,没问题。很高兴我能帮忙!