jquery - 如何在父 ul 旁边显示子 ul

标签 jquery html css

如您在我的代码中所见,我有五个父链接,每个链接有 12 个子链接。当我选择父链接时,我想在父链接旁边显示我的子链接,而其他父链接的其他子链接应该同时隐藏。 the telegraph上的导航网站正是我想要的。

这是导航的示例代码。

  <div class="menu_container">
  <nav class="menu">
  <ul>
    <li><a href="#Menu 1">Menu 1</a>
        <ul>
            <li><a href="#SubMenu 1.1">SubMenu 1.1</a></li>
            <li><a href="#SubMenu 1.2">SubMenu 1.2</a></li>
            <li><a href="#SubMenu 1.3">SubMenu 1.3</a></li>
            <li><a href="#SubMenu 1.4">SubMenu 1.4</a></li>
            <li><a href="#SubMenu 1.5">SubMenu 1.5</a></li>
            <li><a href="#SubMenu 1.6">SubMenu 1.6</a></li>
            <li><a href="#SubMenu 1.7">SubMenu 1.7</a></li>
            <li><a href="#SubMenu 1.8">SubMenu 1.8</a></li>
            <li><a href="#SubMenu 1.9">SubMenu 1.9</a></li>
            <li><a href="#SubMenu 1.10">SubMenu 1.10</a></li>
            <li><a href="#SubMenu 1.11">SubMenu 1.11</a></li>
            <li><a href="#SubMenu 1.12">SubMenu 1.12</a></li>
        </ul>
    </li>
    <li><a href="#Menu 2">Menu 2</a>
        <ul>
            <li><a href="#SubMenu 2.1">SubMenu 2.1</a></li>
            <li><a href="#SubMenu 2.2">SubMenu 2.2</a></li>
            <li><a href="#SubMenu 2.3">SubMenu 2.3</a></li>
            <li><a href="#SubMenu 2.4">SubMenu 2.4</a></li>
            <li><a href="#SubMenu 2.5">SubMenu 2.5</a></li>
            <li><a href="#SubMenu 2.6">SubMenu 2.6</a></li>
            <li><a href="#SubMenu 2.7">SubMenu 2.7</a></li>
            <li><a href="#SubMenu 2.8">SubMenu 2.8</a></li>
            <li><a href="#SubMenu 2.9">SubMenu 2.9</a></li>
            <li><a href="#SubMenu 2.10">SubMenu 2.10</a></li>
            <li><a href="#SubMenu 2.11">SubMenu 2.11</a></li>
            <li><a href="#SubMenu 2.12">SubMenu 2.12</a></li>
        </ul>
    </li>
    <li><a href="#Menu 3">Menu 3</a>
        <ul>
            <li><a href="#SubMenu 3.1">SubMenu 3.1</a></li>
            <li><a href="#SubMenu 3.2">SubMenu 3.2</a></li>
            <li><a href="#SubMenu 3.3">SubMenu 3.3</a></li>
            <li><a href="#SubMenu 3.4">SubMenu 3.4</a></li>
            <li><a href="#SubMenu 3.5">SubMenu .5</a></li>
            <li><a href="#SubMenu 3.6">SubMenu 35.6</a></li>
            <li><a href="#SubMenu 3.7">SubMenu 3.7</a></li>
            <li><a href="#SubMenu 3.8">SubMenu 3.8</a></li>
            <li><a href="#SubMenu 3.9">SubMenu 3.9</a></li>
            <li><a href="#SubMenu 3.10">SubMenu 3.10</a></li>
            <li><a href="#SubMenu 3.11">SubMenu 3.11</a></li>
            <li><a href="#SubMenu 3.12">SubMenu 3.12</a></li>
        </ul>
    </li>
    <li><a href="#Menu 4">Menu 4</a>
        <ul>
            <li><a href="#SubMenu 4.1">SubMenu 4.1</a></li>
            <li><a href="#SubMenu 4.2">SubMenu 4.2</a></li>
            <li><a href="#SubMenu 4.3">SubMenu 4.3</a></li>
            <li><a href="#SubMenu 4.4">SubMenu 4.4</a></li>
            <li><a href="#SubMenu 4.5">SubMenu 4.5</a></li>
            <li><a href="#SubMenu 4.6">SubMenu 4.6</a></li>
            <li><a href="#SubMenu 4.7">SubMenu 4.7</a></li>
            <li><a href="#SubMenu 4.8">SubMenu 4.8</a></li>
            <li><a href="#SubMenu 4.9">SubMenu 4.9</a></li>
            <li><a href="#SubMenu 4.10">SubMenu 4.10</a></li>
            <li><a href="#SubMenu 4.11">SubMenu 4.11</a></li>
            <li><a href="#SubMenu 4.12">SubMenu 4.12</a></li>
        </ul>
    </li>
    <li><a href="#Menu 5">Menu 5</a>
        <ul>
            <li><a href="#SubMenu 5.1">SubMenu 5.1</a></li>
            <li><a href="#SubMenu 5.2">SubMenu 5.2</a></li>
            <li><a href="#SubMenu 5.3">SubMenu 5.3</a></li>
            <li><a href="#SubMenu 5.4">SubMenu 5.4</a></li>
            <li><a href="#SubMenu 5.5">SubMenu 5.5</a></li>
            <li><a href="#SubMenu 5.6">SubMenu 5.6</a></li>
            <li><a href="#SubMenu 5.7">SubMenu 5.7</a></li>
            <li><a href="#SubMenu 5.8">SubMenu 5.8</a></li>
            <li><a href="#SubMenu 5.9">SubMenu 5.9</a></li>
            <li><a href="#SubMenu 5.10">SubMenu 5.10</a></li>
            <li><a href="#SubMenu 5.11">SubMenu 5.11</a></li>
            <li><a href="#SubMenu 5.12">SubMenu 5.12</a></li>
        </ul>
      </li>
   </ul>
 </nav>
 </div>

我已经在使用 JQuery,因此我们也欢迎使用 JQuery 的任何解决方案,当然,我们将不胜感激任何帮助。

最佳答案

这最好使用 show() 来完成和 hide()一些 DOM 查询:

var currentParent = null;

$('.menu>ul>li>ul').hide();
$('.menu>ul>li').on('click', selectParent);

function selectParent(event) {
    var elem = $(this);
    if (currentParent && !elem.is(currentParent)) {
        currentParent.children('ul').hide();
    }

    elem.children('ul').show();

    currentParent = elem;
}

参见 this fiddle用于实验。它还展示了如何使用 float 重现 Telegraph 导航栏的外观。和 display: inline无需修改您的标记。

但是我强烈建议添加第二个 <nav> #menu_container 下的元素将包含子菜单。然后您可以链接父级 li元素 ul使用 href 的子列表和 id选择处理程序中的属性。

<nav class="menu">
  <ul>
    <li><a href="#menu_1">Menu 1</a>
    <li><a href="#menu_2">Menu 2</a>
    ...
  </ul>
</nav>

<nav class="submenu">
  <ul id="#menu_1">
    <li><a href="#SubMenu 1.1">SubMenu 1.1</a></li>
    <li><a href="#SubMenu 1.2">SubMenu 1.2</a></li>
    <li><a href="#SubMenu 1.3">SubMenu 1.3</a></li>
    ...
  </ul>
  ...
</nav>

对应的JS:

var currentParent = null;
var currentSubMenu = null;

// Hide all sublists
$('.submenu>ul').hide();

$('.menu>ul>li').on('click', selectParent);

function selectParent(event) {
    var elem = $(this);

    // If there is a previous parent, hide its child list
    if (currentParent && !elem.is(currentParent)) {
        currentSubMenu.hide();
    }

    var childID = elem.children('a').attr('href');
    var childMenu = $(childID);

    // Show the clicked element's child list
    childMenu.show();

    currentParent = elem;
    currentSubMenu = childMenu;
}

这个布局,展示了here ,使您可以更好地控制样式并允许精确定位。事实上,这正是 Telegraph 的 HTML 中的做法(仅使用 div 而不是 nav )。

关于jquery - 如何在父 ul 旁边显示子 ul,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31771500/

相关文章:

javascript - 使字体大小取决于 div 大小

javascript - Angularjs 表单问题。表格不可见

html - 在视频元素中添加子 div,不显示

html - 关于剩余的垂直空间垂直居中一条线

javascript - 如果选中两个单选按钮,请将 css 添加到 div

jquery - 我正在使用 jquery 加载新的 html 文件,但 css 不起作用

jquery - 切换 CSS Jquery

java - 从 HTML 中获取 href 标签

html - 为什么 Site.css 不适用于部分 View 的元素?

javascript - 在动态添加的元素上调用函数