jquery - 折叠和展开列表

标签 jquery css asp.net-mvc-4 visual-studio-2013

<dl class="">
    <dt class="foo-dt">@Html.ActionLink("foo-label", "Foo", "Bar")</dt>
    @foreach (var foo in FooBar.Items)
    {
        <dd class="foo-dd">@Html.ActionLink(@foo.Naam, @foo.Index, "Bar")</dd>
    }
    ... More of similar dt/dd collections.
</dl>

这是一个侧边栏菜单,我必须使用这些特定的标签。 (这是老板吩咐的。)

上面的 HTML 生成了一个链接列表,其中包含多个粗体标题链接,后跟常规元素链接。单击标题会在网格内显示元素。单击元素显示特定元素的详细信息。该站点已设置为这样,我需要保持这样。

但有人问我是否可以让标题折叠其下方的元素,并且仅在用户单击链接时才展开。然后它会在主窗口中显示一个网格,并在侧边栏中显示元素作为选项。

当用户单击另一个标题时,当前标题必须再次折叠,并且另一个网格需要与侧边栏中的元素一起显示。所以基本上,侧边栏将存储所有标题和所选标题的元素。

这能做到吗?当然可以,但我不知道从哪里开始。哦,那好吧。这些标签可能必须包含一个额外的类,将它们标识为可折叠的元素,以及一个额外的 CSS 样式和一些 JavaScript 或 JQuery 脚本。但是由于互联网上的大多数示例都是可折叠的 div 标签而不是 dl/dt/dd 标签,所以我缺少一个很好的示例。

有没有人有一个很好的例子来实现这一切?

最佳答案

$('dt.foo-class').each(function(){
$(this).click(function(){
 $('dd.foo-class').show("slow");
});
});

在这里,您将 foo-dt 替换为 header 类。每个 header 都不同,但它必须与 dd ex 相同:如果 header 是 foo-dt 然后列表是 foo-dd

对于 header 之间的变化,使用这个:

prevHeader ="";
$('dt.foo-class').each(function(){
$(this).click(function(){
if(prevHeader == ""){
prevHeader = "dd"+$(this).attr("class");
}else{
if(prevHeader != $(this).attr("class");){
$("dd"+prevheader).hide('slow');}
}
 $('dd.foo-class').show("slow");
prevHeader = $(this).attr("class");
});
});

关于jquery - 折叠和展开列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25201470/

相关文章:

html - 转换样式 : preserve3d not working in Firefox and IE

c# - 如何在 Asp.net MVC 中将两个文本框的值相乘

javascript - live() 和 bind() 在 jQuery 1.7 之后被弃用的原因是什么

jquery - JsSIP 实现

javascript - google maps api在按钮点击时加载 map

javascript - 模拟点击js

javascript - 到达另一个 div 时停止 div 滚动

javascript - 如何使用 JavaScript 生成特定百分比更亮/更暗的 CSS 颜色

asp.net-mvc - MVC4 授权属性覆盖;如何通过角色?

c# - ASP.NET MVC Helpers,为模型的两个属性创建帮助器