我有以下列表:
- 根目录
- 儿童1
- 儿童2
根目录应该是可折叠的,但子目录不应该是可折叠的。在下面的代码中,如果我单击其中一个,两个目录都将折叠。如何防止子目录被折叠?
<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>
编辑:描述我想要什么的更好的方法。
1.如果我点击root,它应该会显示子节点(适用于上面的代码),如果我再次点击root,它应该会隐藏子节点(也适用)
1.一旦显示了孩子,我点击一个孩子。这个点击将触发折叠并再次隐藏孩子。(这是我试图阻止的)
jsfiddle:http://jsfiddle.net/MgcDU/4537/的参数值
4条答案
按热度按时间k75qkfdt1#
将
data-toggle
和data-target
属性移动到a
元素,如下所示将这些属性放在最顶层的
li
元素中会使该元素及其所有子元素捕获click事件并触发collapse。将这些属性放在子元素中会将click事件处理的范围限制为该元素(及其子元素)。j5fpnvbx2#
我相信你要做的是防止
#root
在它的一个子li
被点击时最小化?如果是这样,你要找的就是event.stopPropogation。尝试将以下代码添加到JSFiddle:
这将以
li
子元素为目标,并防止它们的click事件冒泡到具有collapse属性的li
父元素。vqlkdk9b3#
mo49yndu4#
由于
li
标记是ul#root
的后代,因此无法在不折叠li
子元素的情况下折叠根。折叠根时,li
子标记将不可见。