【发布时间】:2014-01-29 22:59:41
【问题描述】:
我有一个显示在许多嵌套列表中的信息“树”(ul li ul li ....)。两个问题:
- 当我单击
<li>时,父 ul 和子 ul 都被切换。 - 如果我在没有 ul 的嵌套列表中单击
<li>(例如,下面的 Cranberry 下的蓝色),则父 ul 是切换的,即使这不应该匹配 'li.has( ul)'。
我尝试了各种 JQuery 选择器、next(ul)、children().first() 等,结果相同。不走运 - 虽然我确定我只是在这里遗漏了一些简单的东西。
开启JSFiddle。
$('li.has(ul)').click(function() {
$(this).children('ul').toggle();
});
还有html:
<ul class="unstyled" id="full_ontology">
<li>Apple</li>
<li>Banana</li>
<li>Cranberry
<ul>
<li>Blue</li>
<li>Red
<ul>
<li>Round</li>
<li>Square</li>
<li>Circular</li>
</ul>
</li>
<li>Purple</li>
</ul>
</li>
<li>Date</li>
<li>Elderberry
<ul>
<li>Yellow</li>
<li>Pink</li>
<li>Black</li>
</ul>
</li>
<li>Fig</li>
</ul>
【问题讨论】:
-
您可以通过在顶部 UL 上放置一个侦听器来避免所有这些,然后使用事件目标来确定点击的来源。然后,您可以根据需要折叠或展开相关列表。
标签: javascript jquery toggle nested-lists