我想先隐藏所有的子菜单,然后点击span.expand,所有的子菜单都会显示出来。
这是我的HTML:
<div class="ym-gbox">
<ul>
<li>menu1</li>
<li>menu2</li>
<ul>
<li>submenu1</li>
<li>submenu2</li>
</ul>
<ul>
<li>submenu1</li>
<li>submenu2</li>
</ul>
</ul>
</div>
<div id="expandbutton">
<span class="button expand">expand</span>
</div>和我的jQuery:
jQuery(document).ready(function($) {
$('.ym-gbox ul li ul li').hide();
$('.expand').click(function() {
if ($(this).hasClass('act')) {
$(this).removeClass('act');
$('.ym-gbox ul li').not('.menuactive').children('ul').children('li').slideUp('fast');
} else {
$(this).addClass('act');
$('.ym-gbox ul li ul li').slideDown('fast');
}
});
});我哪里做错了?
发布于 2012-08-16 18:46:15
您的选择器没有选择您期望的元素,我已经修改了标记,请尝试以下操作:
<div class="ym-gbox">
<ul>
<li class='expand'>menu1</li>
<ul>
<li>submenu1</li>
<li>submenu2</li>
</ul>
<li class='expand'>menu2</li>
<ul>
<li>submenu1</li>
<li>submenu2</li>
</ul>
</ul>
</div>jQuery(document).ready(function() {
$('.ym-gbox > ul ul').hide();
$('.ym-gbox li.active').next().show();
$('.expand:not(.active)').click(function() {
$(this).addClass('active').siblings('li').removeClass('active')
$(this).siblings('ul').slideUp();
$(this).next('ul').slideDown()
});
});发布于 2012-08-16 18:35:08
这是因为你有无效的html。应该是这样的:
<div class="ym-gbox">
<ul>
<li>menu1
<ul>
<li>submenu1</li>
<li>submenu2</li>
</ul>
</li>
<li>menu2
<ul>
<li>submenu1</li>
<li>submenu2</li>
</ul>
</li>
</ul>
</div>
<div id="expandbutton">
<span class="button expand">expand</span>
</div>发布于 2012-08-16 18:37:32
为什么不给你的子菜单一个自己的id,并调用如下代码:
$(".expand").toggle(function(e){
$("#submenu).slideUp("slow");
}, function(){
$("#submenu").slideDown("slow");
})https://stackoverflow.com/questions/11985261
复制相似问题