Bootstrap在加载时折叠
我用这个脚本
$(function () { $('.tree li:has(ul)').addClass('parent_li').find(' > span').attr('title', 'Collapse this branch'); $('.tree li.parent_li > span').on('click', function (e) { var children = $(this).parent('li.parent_li').find(' > ul > li'); if (children.is(":visible")) { children.hide('fast'); $(this).attr('title', 'Expand this branch').find(' > i').addClass('icon-plus-sign').removeClass('icon-minus-sign'); } else { children.show('fast'); $(this).attr('title', 'Collapse this branch').find(' > i').addClass('icon-minus-sign').removeClass('icon-plus-sign'); } e.stopPropagation(); });
http://jsfiddle.net/jhfrench/GpdgF/
用于递归可折叠菜单。 它完美地运作。 但是我需要最初折叠的菜单,即页面加载并仅在单击时展开。
我的JS知识很薄弱。 但我尝试使用toggle(); 并隐藏(); ,它会导致折叠,并且在点击时不会扩展
下面是递归的PHP代码
- Parent <a href="https://stackoverflow.com/questions/20596356/bootstrap-collapsed-on-load/slug; ?>">https://stackoverflow.com/questions/20596356/bootstrap-collapsed-on-load/name; ?>
categories_menu); ?>
您可以添加css规则以在开始时隐藏子li元素
.tree li ul > li { display: none; }
演示: 小提琴
或者在页面加载时隐藏子li元素
$(function () { $('.tree li:has(ul)').addClass('parent_li').find(' > span').attr('title', 'Collapse this branch'); //hide the child li elements $('.tree li ul > li').hide(); $('.tree li.parent_li > span').on('click', function (e) { var children = $(this).parent('li.parent_li').find(' > ul > li'); if (children.is(":visible")) { children.hide('fast'); $(this).attr('title', 'Expand this branch').find(' > i').addClass('icon-plus-sign').removeClass('icon-minus-sign'); } else { children.show('fast'); $(this).attr('title', 'Collapse this branch').find(' > i').addClass('icon-minus-sign').removeClass('icon-plus-sign'); } e.stopPropagation(); }); });
演示: 小提琴
完成所需操作的最简单方法是运行click()处理程序一次。
$(function () { $('.tree li.parent_li > span').on('click', function (e) { $('.tree li:has(ul)').addClass('parent_li').find(' > span').attr('title', 'Collapse this branch'); //blah blah blah e.stopPropagation(); }).click(); });
编辑:忘了一些代码