javascript - 如何使用按钮切换嵌套列表

标签 javascript jquery html

我创建了一个带有嵌套的列表并为每个父级添加了一个按钮 <li>元素。该列表如下所示:

$("#pr1").append("<button id='bnt-cat13' class='buttons-filter'>expnd1</button>");
$("#pr2").append("<button id='bnt-cat13' class='buttons-filter'>expnd2</button>");
$("#pr3").append("<button id='bnt-cat13' class='buttons-filter'>expnd3</button>");

$(document).ready(function() {
  $("button").click(function() {
    $('li > ul').toggle();
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul class="categories">
  <li>1</li>
  <li class="parent" id="pr1">2
    <ul class="children">
      <li>2.1</li>
    </ul>
  </li>
  <li>3</li>
  <li class="parent" id="pr2">4
    <ul class="children">
      <li>4.1</li>
      <li class="parent" id="pr3">4.2
        <ul class="children">
          <li>4.2.1</li>
        </ul>
      </li>
    </ul>
  </li>
  <li>5</li>
</ul>

但是这个切换所有列表,而不是只切换单独的嵌套列表? 如何仅显示/隐藏单击按钮的单独嵌套列表? 提前致谢。

最佳答案

至于主要问题 - 而不是每个 li > ul 元素,您只需要 toggle 之前的 ul 元素一个按钮。所以你应该使用 .prev()

$("button").click(function() {
  $(this).prev().toggle();
});

$("#pr1").append("<button id='bnt-cat131' class='buttons-filter'>expnd1</button>");
$("#pr2").append("<button id='bnt-cat132' class='buttons-filter'>expnd2</button>");
$("#pr3").append("<button id='bnt-cat133' class='buttons-filter'>expnd3</button>");

$(document).ready(function() {
  $("button").click(function() {
    $(this).prev().toggle();
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul class="categories">
  <li>1</li>
  <li class="parent" id="pr1">2
    <ul class="children">
      <li>2.1</li>
    </ul>
  </li>
  <li>3</li>
  <li class="parent" id="pr2">4
    <ul class="children">
      <li>4.1</li>
      <li class="parent" id="pr3">4.2
        <ul class="children">
          <li>4.2.1</li>
        </ul>
      </li>
    </ul>
  </li>
  <li>5</li>
</ul>


您的代码还有另一个问题需要解决 - 每个按钮都有相同的 id 属性 (bnt-cat13)。
The id global attribute defines a unique identifier (ID) which must be unique in the whole document.

关于javascript - 如何使用按钮切换嵌套列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43943702/

相关文章:

javascript - 使用动画将元素从一个父元素移动到另一个父元素

jquery - 检测水平鼠标滚轮

javascript - 如何在 jQuery 中向 `change` 事件添加属性

html - 使整个图像成为 Dreamweaver 中的链接

javascript - 显示的空白页面 - Angular JS

ios - 如何在不刻录的情况下将字幕嵌入视频文件(html5)

php - PHP 中的 `with` 和 `let`?

javascript - Math.sin() .cos() 的成本 vs 怪异的自己的实现

javascript - Uncaught Error : Minified exception occurred REACT and BACKBONE integration

javascript - 浏览器自定义命名空间元素处理器