javascript - 使用 href 显示/隐藏 div 并使用 jquery 滚动到显示的 div

标签 javascript jquery html css

我有一个 jquery 函数,可以在单击 href 链接时显示/隐藏 div。但是每次加载 div 时,页面都会向上滚动到顶部而不是目标 div。这是 div 的 jquery 代码和 html 布局。 jquery 用于从单击的链接获取 id 并打开目标 div。

我需要页面在点击时滚动到目标 div。

所以如果我点击 item1 然后页面滚动到 div100 然后当我点击 item1-desc1 然后页面应该滚动到 div1.

有没有办法编辑 jquery 来实现这一点。

我尝试在点击功能中使用以下内容。但页面不会滚动到目标 div。

  $('html, body').animate({
    scrollTop: $( $(this).attr('#') ).offset().top
    }, 500);
    return false;

$('a').click(function () {
var divname= this.name;
$("#"+divname).fadeIn("slow").siblings().fadeOut("fast");
});
<a href="#" name="div100" class="btn btn-primary btn-lg" ><font color = "white">item1</font></a>
<a href="#" name="div200" class="btn btn-primary btn-lg" ><font color = "white">item2</font></a>
<a href="#" name="div300" class="btn btn-primary btn-lg" ><font color = "white">item3</font></a>
<a href="#" name="div400" class="btn btn-primary btn-lg" ><font color = "white">item4</font></a>

<div id="div100" style="display:none" align="left">
<li1><a href="#" name="div1" >item1-desc1</a></li1>
<li1><a href="#" name="div2" >item1-desc2</a></li1>
<li1><a href="#" name="div3" >item1-desc3</a></li1>
  
<div id="div200" style="display:none" align="left">
<li1><a href="#" name="div4" > item2-desc1</a></li1>
<li1><a href="#" name="div5" >item2-desc2</a></li1>
<li1><a href="#" name="div6" >item2-desc3</a></li1>
    
<div id="div300" style="display:none" align="left">
<li1><a href="#" name="div7" > item3-desc1</a></li1>
<li1><a href="#" name="div8" >item3-desc2</a></li1>
<li1><a href="#" name="div9" >item3-desc3</a></li1>
      
<div id="div400" style="display:none" align="left">
<li1><a href="#" name="div10" > item4-desc1</a></li1>
<li1><a href="#" name="div11" >item4-desc2</a></li1>
<li1><a href="#" name="div12" >item4-desc3</a></li1>
  
<div id="div1" style="display:none" align="left">
  <!--div1 contents-->
<div id="div2" style="display:none" align="left">
  <!--div2 contents-->
<div id="div3" style="display:none" align="left">
  <!--div3 contents-->
<div id="div4" style="display:none" align="left">
  <!--div4 contents-->
  <!--- so on...->

最佳答案

你的尝试很好,你只是输入了错误的属性:

$('html, body').animate({
    scrollTop: $( $(this).attr('href') ).offset().top
   }, 500);

你应该添加一个 preventDefault:

$('a').on('click', function(e){
    e.preventDefault();
    var divname= this.name;
    $("#"+divname).fadeIn("slow").siblings().fadeOut("fast");
    $('html, body').animate({
        scrollTop: $( $(this).attr('href') ).offset().top
    }, 500);
}

关于javascript - 使用 href 显示/隐藏 div 并使用 jquery 滚动到显示的 div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38746825/

相关文章:

javascript - 鼠标滚动时更改滚动条速度

javascript - 使用 Javascript 将数据添加到 Firebase 的最简单方法

javascript - 当 CasperJS 中的特定断言失败时如何捕获屏幕截图?

c# - 从 jQuery 调用 ASMX

html - 如何正确定位导航栏

javascript - 如果高度改变滚动 HTML div

javascript - 如何将表单数据存储在本地存储中?

javascript - 在字符串中的任意位置追加单词

JQuery:隐藏 MSIE、Safari、Chrome 的问题

javascript - 如何调整选项卡容器中的 div 位置?