【问题标题】:jQuery - show only current uljQuery - 仅显示当前 ul
【发布时间】:2011-08-24 17:31:56
【问题描述】:

我是 jQuery 新手,对以下导航有一点小问题:

http://jsfiddle.net/6Dh8j/7/

基本上,我喜欢这个可爱网站的创意制作部分的导航:http://www.gainsburyandwhiting.com > 参见作品集 > 时装秀等...

我需要隐藏当前的 ul 并在其位置显示一个新的。目前,它们一直显示,直到我取消单击父级。

有什么想法吗?

谢谢, 红色

【问题讨论】:

  • 您能详细说明您想做什么吗?
  • 隐藏当前一个简单的你可以使用this.hide();
  • 它是关于隐藏所选项目的表亲,否则它们会显示和隐藏在彼此之上,而不是仅在视图中选择一个...

标签: javascript jquery toggle html-lists children


【解决方案1】:

您需要隐藏当前ul 的兄弟姐妹的后代的所有ul 元素,例如

$(this).siblings().find('ul').fadeOut('fast');

这会找到被点击的ul 的每个兄弟(在示例中都是ul)并找到所有在其边界内的ul 元素并将它们淡出。

在您的代码上下文中:

$("nav ul li").find("ul").hide().end()
  .click(function(e) {
     if (this == e.target) {
       $(this).siblings().find('ul').fadeOut('fast');
       $(this).children('ul').fadeToggle('fast');    
     }
});

【讨论】:

  • 感谢您的快速回复!这完全有道理,工作一种享受!我在想,当你回到开始菜单时,有没有办法隐藏打开的孩子?即,如果您单击级别 1,然后级别 2 显示级别 3 项目,但是如果您单击另一个级别 1 项目,然后重新选择初始级别 1 项目,级别 3 已经打开?有没有一种方法可以在您每次开始该过程时从头开始打开/关闭?
  • 我一出门就意识到了这一点。您需要找到所有 uls 而不是直系子女。我会立即编辑答案。
  • Aleksi Yrttiaho - 非常感谢,您绝对是 Stackoverflow 如此出色的功劳。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多