【问题标题】:Jump down to the div that is toggled跳到被切换的 div
【发布时间】:2015-09-09 13:54:00
【问题描述】:

目前的情况是这样的:一旦点击相应的链接,下面的代码就可以切换一个 div。如果您再次单击该链接,它也会隐藏 div。

我想要做的是隐藏所有 div,除非你点击相应的 a href 链接。当您单击此 href 链接时,它会显示正确的 div,然后隐藏其他 div。它会自动“跳转”到切换的 div,类似于如果您在那里有一个锚标记链接 a href 链接和 div 的效果。

目前,当我单击链接时,它会显示 div,但我仍然需要向下滚动页面才能查看 div。它不会自动跳到被切换的那个 div。当您单击当前链接进行查看时,它也不会隐藏其他 div。我玩过 slideToggle() 但我仍然需要向下滚动才能查看切换的 div。

这是我所拥有的示例代码:

 <div class="row">
      <div class="large-12 columns">

         <a href="javascript:toggleByClass('content1')" class="link-list"> Content 1 </a>
         <a href="javascript:toggleByClass('content2')" class="link-list"> Content 2 </a>
         <a href="javascript:toggleByClass('content3')" class="link-list"> Content 3 </a>
  </div>
 </div>

 <div class="row">
    <div class="large-12 columns">

     <div class="content1" style="display: none;">
       <p> Information in Content 1</p>
     </div>
     <div class="content2" style="display: none;">
       <p> Information in Content 2</p>
     </div>
     <div class="content3" style="display: none;">
       <p> Information in Content 3</p>
     </div>
  </div>
 </div>

  <script type="text/javascript">

    function toggleByClass(className) {
     $("." + className).toggle();
}

 </script>

非常感谢任何有关方向的建议。

  • 在收到一个链接说这可能是一个可能的重复问题后 - 我想指出我并没有尝试添加一个锚标记来跳转到页面上的内容。我想跳下一个页面来查看已切换的 div,并隐藏其他未切换的 div。

【问题讨论】:

  • Jan - 虽然这个链接可能显示类似的东西 - 它仍然与我所要求的略有不同。那篇文章正在寻求有关如何切换 div 的帮助(他们询问如何在不使用锚标记的情况下跳转到 div)——我已经使用 toggleByClass 函数完成了上述操作。我正在寻找更多的是如何向下滑动到当前切换的 div,看起来这个 scrollIntoView 可能有助于实现这一目标。感谢您发布此链接,因为它仍然很有帮助。
  • “他们询问如何在不使用锚标签的情况下跳转到 div” 是的,这也正是您要问的。使用scrollIntoView 甚至是链接问题stackoverflow.com/a/4801674/78639的答案之一

标签: javascript jquery html


【解决方案1】:

要自动向下滚动到元素,请尝试将此行添加到您的 toggleByClass 函数:

document.getElementsByClassName(className)[0].scrollIntoView();

更多详情请见this page

要隐藏其他元素,请尝试将此行添加到您的 toggleByClass 函数:

$("." + className).siblings().hide();

【讨论】:

  • 这解决了这个问题!非常感谢Cauterite!
  • @user3604867 没问题;顺便说一句,我推荐devdocs.io 作为任何 JS/HTML/CSS 开发的参考指南——它整合了许多不同的文档集,包括 DOM API 和 jQuery,所以当你面对这些类型时,这是一个很好的地方的问题。
  • 太好了!谢谢,一定会去看看的。
【解决方案2】:

我对您的方法进行了一些更改,我认为可以解决问题。它利用锚标签跳转到正确的 div 并在隐藏其他的同时显示它。

$(document).ready(function(){
	$(".collapse-link").click(function(){
        var idToCollapse = $(this).attr("href");
        $(".collapse-div").not(idToCollapse).hide();
        $(idToCollapse).toggle();
    });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="row">
      <div class="large-12 columns">
         <a href="#content1" class="collapse-link"> Content 1 </a>
         <a href="#content2" class="collapse-link"> Content 2 </a>
         <a href="#content3" class="collapse-link"> Content 3 </a>
      </div>
 </div>

 <div class="row">
    <div class="large-12 columns">

     <div id="content1" class="collapse-div" style="display: none;">
       <p> Information in Content 1</p>
     </div>
     <div id="content2" class="collapse-div" style="display: none;">
       <p> Information in Content 2</p>
     </div>
     <div id="content3" class="collapse-div" style="display: none;">
       <p> Information in Content 3</p>
     </div>
  </div>
 </div>

【讨论】:

  • 直到我发帖后我才看到你接受了答案,但我会留下它作为替代方案
【解决方案3】:

修改为:

<a href="#content1"  id="atag1" class="link-list"> Content 1 </a>
<div id="content1" class="content1" style="display: none;">

$('#atag1').on("click", function(){
     $('.content1').toggle()
})

这可以扩展到剩下的两个。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2018-12-02
  • 2010-10-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多