<li class="nav-parent"> <a href="#"><span>导航1</span></a> <ul class="children"> <li><a href="#">导航11</a></li> <li><a href="#">导航11</a></li> <li><a href="#">导航11</a></li> </ul> </li> <li class="nav-parent"> <a href="#"><span>导航2</span></a> <ul class="children"> <li><a href="#">导航2</a></li> <li><a href="#">导航2</a></li> <li><a href="#">导航2</a></li> </ul> </li> <li class="nav-parent"> <a href="#"><span>导航3</span></a> <ul class="children"> <li><a href="#">导航3</a></li> <li><a href="#">导航3</a></li> <li><a href="#">导航3</a></li> <li><a href="#">导航3</a></li> </ul> </li>
JS示例 (这里是用jquery实现的,代码行数少)
var $container = $('.children'), $trigger = $('.nav-parent'); // 分别获取所有的“父子” $container.hide();// 隐藏所有的“子” $trigger.first().find('.children').show();// 显示第一个“父”的子(展开第一个) $trigger.on('click', function(e) {// 当“父”发生点击事件 if( $(this).find('.children').is(':hidden') ) { $trigger.find('.children').hide(300);// 关闭其他 $(this).find('.children').show(300);// 显示自己 } e.preventDefault(); });
同样的原理,也可以把“find()”改成“next()”,实现对兄弟节点的控制,这里主要是体现在文字块、图片块的展示上面