jquery - .fadeToggle() 使我的子列表无法访问

标签 jquery html

我在列表中嵌套列表,并且当用户单击相应的主题时我尝试切换子列表。然而,发生的情况是,用户可以单击子列表上的任意位置来关闭子列表,这将使链接无法访问。 (我知道现在子列表中没有链接)。 你能帮我解决这个问题吗?

$(document).ready(function() {
  $("#list li").click(function() {
    $(this).find("ul").fadeToggle();
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div>
  <ul id="list">
    <li>
      TOPIC I
      <ul class="inner-lists">
        <li>1</li>
        <li>2</li>
        <li>3</li>
      </ul>
    </li>
  </ul>
  <div id="display"></div>
</div>

最佳答案

这比尝试停止传播效果更好(请参阅下一个片段以获取解释):

$(document).ready(function() {
  $("#list span").click(function(e) {
    $(this).next("ul").fadeToggle();
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div>
  <ul id="list">
    <li>
      <span>TOPIC I</span>
      <ul class="inner-lists">
        <li>1</li>
        <li>2</li>
        <li>3</li>
      </ul>
    </li>
  </ul>
  <div id="display"></div>
</div>

在您的代码中,您需要停止传播,但这并没有阻止子 LI 之间的点击关闭。尝试单击此处子列表中的第 1 行和第 2 行之间,看看我的意思

$(document).ready(function() {
  $("#list li").click(function(e) {
    e.stopPropagation();
    $(this).find("ul").fadeToggle();
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div>
  <ul id="list">
    <li>
      TOPIC I
      <ul class="inner-lists">
        <li>1</li>
        <li>2</li>
        <li>3</li>
      </ul>
    </li>
  </ul>
  <div id="display"></div>
</div>

关于jquery - .fadeToggle() 使我的子列表无法访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37909328/

相关文章:

javascript - 事件.目标.节点名称!= "CHECKBOX"

jQuery 多次调用同一个函数,对同一个 div 名称使用不同的输入

javascript - 将 2d 数组 jquery post 发送到 java servlet

javascript - 像素完美图像导致闪烁平滑移动失败舍入 css 变换或 css 转换

javascript - 鼠标悬停时菜单不应移动。位置要固定

jquery - 使用 jQuery 和 css3 的 Coverflow

javascript - 为什么 JQuery 上的对话框在 XPages 中不起作用

javascript - ng-repeat 列表,每 x 项后内容不同

jquery - 使用 jQuery csvToTable 创建的 html 表中没有要操作的行?

html - 导航下拉菜单出现异常并显示不同的选项卡