使用jquery折叠列表
collapsing a list using jquery
我有一个列表,我试图崩溃,并有麻烦,一旦我得到较低的层次结构。这是我的html:
<ul class="list">
<li>
<a>Categories</a>
<ul>
<li>
<a>Parent</a>
<ul>
<li><a>Child</a></li>
<li><a>Child</a></li>
<li><a>Child</a></li>
</ul>
</li>
<li>
<a>Parent</a>
<ul>
<li><a>Child</a></li>
<li><a>Child</a></li>
<li><a>Child</a></li>
</ul>
</li>
<li>
<a>Parent</a>
<ul>
<li><a>Child</a></li>
<li><a>Child</a></li>
<li><a>Child</a></li>
</ul>
</li>
<li>
<a>Parent</a>
<ul>
<li><a>Child</a></li>
<li><a>Child</a></li>
<li><a>Child</a></li>
</ul>
</li>
</ul>
</li>
</ul>
这是我的jquery
$( document ).ready(function() {
$('.list > li a').click(function(){
$(this).parent().find('ul').toggle();
});
});
这里是一个jfiddle: http://jsfiddle.net/u7bczqup/
一旦你点击类别,父母就会下来。当这种情况发生时,父母的所有孩子都被显示出来,而不是隐藏起来。为什么不把这些藏起来?我试着调整我的jquery,但这导致它不工作。
它们不是隐藏的,因为jquery查找在它下面的任何后代,然后你在切换它们,你应该使用children()。
试试这个:
$(this).parent().children('ul').toggle();
http://jsfiddle.net/u7bczqup/1/
https://api.jquery.com/children/试试吧。
JS:
$( document ).ready(function() {
$('.list > li a').click(function(){
$(this).next('ul').toggle();
});
});
使用.find()
的问题是它正在寻找所有的ul
元素。您可以通过添加这一行来检查这一点:console.log($(this).parent().find('ul'));
这将把它"找到"的所有ul
标记打印到控制台。因为它会找到所有的,所以它会切换所有的
您正在方法.find('ul')中搜索所有直接子代的无序列表元素。它应该是。find('ul:first-child')或者更准确地说是。children(ul:first)所以它应该是
$( document ).ready(function() {
$('.list > li a').click(function(){
$(this).parent().children('ul').toggle();
});
});
更多信息请参考jquery查找方法
相关文章:
- 默认情况下折叠和展开嵌套列表
- 使用下拉列表引导不可折叠的导航栏
- jQuery与可折叠列表冲突
- 阻止javascript关闭打开的折叠列表
- 可折叠/不可折叠的列表视图类似于Word大纲视图
- 更高效的可折叠列表定位
- 使用 JavaScript 在 HTML 中展开/折叠列表
- 如何在Spring MVC中实现无序列表的展开/折叠功能
- 纯 js 中的可折叠列表优化
- 使有序列表可折叠
- 使用jQuery可折叠列表 - 如何更新展开/折叠全部按钮
- BootstrapJS - 导航导航列表在单击时不会折叠
- 如何使此展开/折叠常见问题解答列表正常工作
- 将特殊字符折叠添加到列表筛选器
- 在html 4中使用CSS或javascript折叠和扩展列表的最佳方式是什么
- 为什么展开和折叠不起作用,在Accordion列表中搜索文本后
- 可折叠onclick事件中的Jquery Mobile列表没有'动态添加时无法工作
- 展开/折叠对象列表
- 启动列表组菜单在单击时展开,但不会折叠
- 具有无序列表控件的定义列表折叠面板