使用 jquery 更改具有嵌套内容的 div 的可见性,onclick

Posted

技术标签:

【中文标题】使用 jquery 更改具有嵌套内容的 div 的可见性,onclick【英文标题】:using jquery to change visibility of divs with nested content, onclick 【发布时间】:2011-01-18 10:50:24 【问题描述】:

我有一个链接列表。单击其中一个链接时,我想更改与之关联的 div 的可见性。我的 html 如下所示:

<div id="tab">
<ul>
<li id="tab1" class="active"><a href="#">Link 1</a></li>
<li id="tab2"><a href="#">Link 2</a></li>
<li id="tab3"><a href="#">Link 3</a></li>
<li id="tab4"><a href="#">Link 4</a></li>
</ul>
</div>

<div id="content1"><div class="nestedDiv">Content Here</div></div>
<div id="content2"><div class="nestedDiv">Content Here</div></div>
<div id="content3"><div class="nestedDiv">Content Here</div></div>
<div id="content4"><div class="nestedDiv">Content Here</div></div>

我尝试使用在此处找到的示例:How do you swap DIVs on mouseover? (jquery?),但由于嵌套的 div 失败。

有什么想法可以让我在点击时显示给定 div 中的所有内容,包括其他 div 中的所有内容?我还想在页面首次打开时保持第一个 div 处于活动状态...更改所选 li 的活动外观...但我还没有尝试解决这个问题。

感谢任何输入。谢谢!

谢谢!

【问题讨论】:

您应该显示您用来尝试隐藏/显示内容的代码,因为不清楚您使用的是什么调用或选择器。 【参考方案1】:

在每个内容 div 上添加 class="content"

<style type="text/css">
.content

    display: none;

</style>

<script type="text/javascript">

$(document).ready(function() 

   $("#tab a").click(function() 

      //reset
      $(".content").hide();
      $("#tab .active").removeClass("active");

      //act
      $(this).addClass("active")
      var id = $(this).closest("li").attr("id").replace("tab","");
      $("#content" + id).show();
   );

);
</script>

【讨论】:

这很好用,非常感谢!关于如何在页面首次加载时保持第一个内容 div 打开的任何提示? 哎呀,忘了那个。在 $(document).ready 部分下添加: var activeId = $(".active").attr("id").replace("tab",""); $("#content" + activeId).show(); 是的 - 这就像一个魅力。非常感谢您的帮助。

以上是关于使用 jquery 更改具有嵌套内容的 div 的可见性,onclick的主要内容,如果未能解决你的问题,请参考以下文章

jquery 实践操作:div 动态嵌套(追加) div

如何将嵌套 div 向上移动两个 div 级别以匹配父级?

如何在使用 jquery 更改 div 内容时发出警报

使用 ajax、php 和 jQuery 更改 DIV 内容

JQuery toggle/html:更改 div 中的内容

更改 div 的内容 - jQuery