javascript - 如何按类别选择单击元素的子元素

标签 javascript jquery

在我的 html 页面中,有一个所有类别的列表。每个类别都有一些子类别。我希望当单击列表项时,其子类别会被切换,即如果它们可见,则应隐藏它们,反之亦然。同样,在某一时刻,只有一个列表项应该能够显示其子类别。我已经尝试过 this answer ,但这没有帮助。我不介意使用 JS、JQuery 等或完全更改语法。 到目前为止我的工作是

<ul>
    <li class="outer-list-element">
        <a href="#" class="outer-list">category 1</a>
        <ul class="inner-list" id="inner-list">
            <li><a href="#">sub category 1</a></li>
            <li><a href="#">sub category 2</a></li>
        </ul>
    </li>

    <li class ="outer-list-element">
        <a href="#" class="outer-list">category 3</a>
        <ul class="inner-list" id="inner-list">
            <li><a href="#">sub category 1</a></li>
            <li><a href="#">sub category 2</a></li>
        </ul>
    </li>

CSS

li {
    margin-bottom: 8px;
   }
 .inner-list {
    margin-top: 10px;
    display: none;
 }

脚本

$('.outer-list-element').click(function () {
    $(this).children().toggle();
})



$(".outer-list").click(function() {
$(this).siblings('.inner-list').toggle();
return false;
});

随时更新这个 fiddle https://jsfiddle.net/7vmtd2px/1/

最佳答案

请尝试以下代码。

$('.outer-list').click(function () {
   //Hide other ul
   $('ul .inner-list').not($(this).parent('li').find('ul')).hide();
   //Toggle clicked ul
   $(this).parent('li').find('ul').toggle();
});
li {
  margin-bottom: 8px;
}
.inner-list {
  margin-top: 10px;
  display: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
        <li class="outer-list-element">
            <a href="#" class="outer-list">category 1</a>
            <ul class="inner-list">
                <li><a href="#">sub category 1</a></li>
                <li><a href="#">sub category 2</a></li>
            </ul>
        </li>
        <li class="outer-list-element">
            <a href="#" class="outer-list">category 2</a>
            <ul class="inner-list">
                <li><a href="#">sub category 1</a></li>
                <li><a href="#"> sub category 2</a></li>
            </ul>
        </li>
        <li class ="outer-list-element">
            <a href="#" class="outer-list">category 3</a>
            <ul class="inner-list">
                <li><a href="#">sub category 1</a></li>
                <li><a href="#">sub category 2</a></li>
            </ul>
        </li>
</ul>

关于javascript - 如何按类别选择单击元素的子元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38759095/

相关文章:

javascript - 创建/添加另一个选择(下拉)框的功能

jquery - 如何使用 jQuery 选择器选择一个类中的所有类

javascript - ajax 调用期间的回发

javascript - 未捕获的不变违规 : Objects are not valid as a React child. 如果您打算渲染子集合,请改用数组

javascript - jsreact - 获取 http ://localhost:8080/manifest. json 404(未找到)

javascript - 从对象数组中获取 JavaScript 对象

javascript - 如何设置最小高度和最大高度等于窗口高度

javascript - 传递 "this"作为参数

javascript - 如何在 angularjs Controller 中进行 google place api 搜索

javascript - 错误未捕获语法错误 : Unexpected token <in JSON at position 0