我有以下列表:
根应该是可折叠的但不是孩子。如果我点击其中一个代码,则以下代码都将崩溃。如何防止儿童瘫倒?
<li data-toggle="collapse" data-target="#root"><a href="#">Root</a>
<ul class="nav nav-list collapse" id="root">
<li><a href="some_url">Child1</a></li>
<li><a href="some_url">Child2</a></li>
</ul>
</li>
编辑:更好地描述我想要的东西。
jsfiddle:http://jsfiddle.net/MgcDU/4537/
答案 0 :(得分:5)
将data-toggle
和data-target
属性移至a
元素,例如
<li><a href="#" data-toggle="collapse" data-target="#root">Root</a>
<ul class="nav nav-list collapse" id="root">
<li><a href="#">Child1</a></li>
<li><a href="#">Child2</a></li>
</ul>
</li>
将它们放在最顶层的li
元素中会使该元素及其所有子元素捕获单击事件并触发折叠。将属性放入子元素会将单击事件处理的范围限制为该元素(及其子元素)。
答案 1 :(得分:1)
我相信您要做的是阻止#root
在点击其中一个子li
时最小化?如果是这样,您要找的是event.stopPropogation。
尝试将以下代码添加到JSFiddle:
$('ul > li').on('click', function(e) { e.stopPropagation(); });
这会定位子li
元素,并防止其点击事件冒泡到具有折叠属性的父li
。
答案 2 :(得分:1)
$("#root a").click(function (e) {
return false;
});
答案 3 :(得分:0)
由于li
标记是ul#root
的后代,因此无法在不折叠子li
元素的情况下折叠根。折叠root时,将无法看到子li
标记。