javascript - 防止在单击子元素时触发其父级的单击事件

标签 javascript jquery html css

<分区>

我有一个可深入到三个级别的以下菜单: 主 > sub > subsub

<nav>
      <div class="mainMenu">Main Menu Item # 1.
                    <ul>
                        <li> Sub Menu Item # 1</li>
                        <li class="subMenu"> Sub Menu Item # 2
                            <ul>
                                <a href="New">
                                    <li>New</li>
                                </a>
                                <a href="">
                                    <li>Old</li>
                                </a>
                                <a href="">
                                    <li>View </li>
                                </a>
                            </ul>
                             <div class="n_r2_c2"></div>
                        </li>
                        <li> Sub Menu Item # 3</li>
                        <li> Sub Menu Item # 4</li>
                    </ul>
  </div>

这是我的 JQ:

$('.mainMenu').click(function () {
    $(this).children('ul').slideToggle(250);
});

$('.subMenu').click(function () {
        $(this).children('ul').slideToggle(250);
});

问题是主子菜单的子菜单切换工作正常,但是当我单击子菜单中的元素而不是切换其子菜单时,它会自行关闭,因为当我单击子菜单时主菜单 click 事件也很可能被触发,因为子菜单在它里面并且它需要点击它作为点击主 div?

无论如何我该如何解决这个问题,请帮忙。

最佳答案

使用 event.stopPropagation() 以防止事件在 DOM 树中冒泡。

示例:

$('.subMenu').click(function (e) {
    $(this).children('ul').slideToggle(250);
    e.stopPropagation();
});

这将解决您的问题。

关于javascript - 防止在单击子元素时触发其父级的单击事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19344334/

相关文章:

javascript - 循环遍历 X 类的 div 来查找与 Y 类的 div 的相关性

javascript - 修复了 anchor 到错误位置的菜单

html - 列表中的图像和文本内联

javascript - 如何将 iframe 与 100% 高度和页面滚动条集成

javascript - 过滤掉对象成员的好习惯用法(javascript)

javascript - 单选按钮组 - 按钮的更改事件被取消选择?

javascript - 如何在存储为 Javascript 变量的 HTML 字符串中转义 JSON?

php - 使用 PHP $_POST 从另一个 PHP 脚本的 echo 表单获取输入

javascript - 在 NodeJS session 中看不到原型(prototype)方法

javascript - Angular 语法错误 : Unexpected token }