参见英文答案 >
jquery stop child triggering parent event6
我有一个以下菜单,演练到三个层次:
主要>子> subsub
我有一个以下菜单,演练到三个层次:
主要>子> 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); });
问题是主菜单的子菜单切换主菜单工作正常,但是当我单击子菜单中的项目而不是切换其子菜单时,它会自动关闭,因为当我点击子菜单时,主菜单单击事件也被触发很可能是因为子菜单里面是它,它需要点击它的主要div?
无论如何我可以解决这个问题,请帮忙.
解决方法
使用
event.stopPropagation()来防止事件冒出DOM树.
例:
$('.subMenu').click(function (e) { $(this).children('ul').slideToggle(250); e.stopPropagation(); });
这将解决您的问题.