【发布时间】:2013-12-19 21:41:02
【问题描述】:
您好,我正在尝试使用下拉菜单制作一个简单的菜单。 带有一个简单的嵌套列表。像这样:
<ul>
<li class="niv0">
<a href="#" class="has_ssmenu closed">Rubrique</a>
<ul class="ssmenu">
<li class="niv1">
<a href="#">Sous-rubrique</a>
</li>
</ul>
</li>
<li class="niv0">
<a href="#" class="has_ssmenu closed">Rubrique</a>
<ul class="ssmenu">
<li class="niv1">
<a href="#">ssrub</a>
</li>
</ul>
</li>
<li class=" niv0">
<a href="#">rubrique</a>
</li>
</ul>
我想,点击“.has_ssmenu”,嵌套列表slideToggle或fade并添加一个“.open”类,当然如果已经有一个列表切换,关闭它并删除' .open' 类。
我的实际jquery代码是这样的:
$('.ssmenu').css( 'display','none');
var open = false;
$('.has_ssmenu').toggle(
function() {
if (open == false){
//if its the first time
$(this).next().slideToggle(400);
$(this).next().addClass("ssmenu_open");
$(this).addClass("open");
$(this).removeClass("closed");
open=true;
}
else{
//if there is already a list opened
$('.ssmenu_open').slideToggle(50);
$('.has_ssmenu').next().removeClass("ssmenu_open");
$('.has_ssmenu').removeClass("open");
$('.has_ssmenu').addClass("closed");
$(this).next().slideToggle(400);
$(this).next().addClass("ssmenu_open");
$(this).addClass("open");
$(this).removeClass("closed");
}
},
function() {
$(this).removeClass("open");
$(this).addClass("closed");
$(this).next().removeClass("ssmenu_open");
$(this).next().slideToggle(400);
open=false;
});
但它不起作用:( 我无法处理多个链接。如果我单击其他链接,如何停止切换?
其实用我的代码,第一次点击没问题,如果你选择其他链接也没问题:第一个打开的列表是关闭的。 但是,如果您再次单击现在关闭的第一个链接,我的代码错误。他没有得到公开课,他没有关闭第二个打开的列表。
也许有最简单的方法?
非常感谢您的帮助。
【问题讨论】:
标签: jquery slidetoggle