我正在制作一个菜单,在这个菜单中我想要“slideToggle”一些选项卡(菜单项)的选项。所以我有一个“中学”标签,当用户点击那里时,他/她会“显示”其他一些标签。
唯一的问题是菜单是自动生成的,并且“中学”有一个我无法删除的 href 链接,因为用户也需要能够访问该链接。
经过一番研究,我想出了这个:
$('#menu li a, #menu li').click(function() {
$(this).find("ul").slideToggle("slow");
switch( $('#menu ul.menu li ul').css('display') ){
case "none":
return false;
break;
case "list-item":
return true;
break;
};
});
但是,当用户现在单击链接以打开其他选项卡时,脚本不会“滑动切换”选项卡。我也尝试过event.preventDefault();
同样不起作用的方法,因为之后链接需要处于活动状态。而且我还没有找到preventDefault ..的计数器功能。
因此,当用户单击选项卡时,它将打开更多选项卡:
因此,当有人点击“信息”时,它会向下滑动一些其他选项卡,当其他选项卡向下时,需要再次点击“信息”链接才能进入“信息”页面。
因此,我正在寻找一种能够在不转到链接的情况下单击链接但“滑动切换”选项卡的方法,并且当“显示”选项卡时,链接需要再次处于活动状态。
编辑:我忘了指定这个页面是一个移动页面,所以鼠标悬停和悬停将不起作用......
已解决 此代码解决了我的问题:
$('#menu ul.menu li.expanded').each(function(i){
switch(i)
{
case 0:
$(this).addClass("open");
break;
case 1:
$(this).addClass("open");
break;
case 2:
$(this).addClass("open");
break;
case 3:
$(this).addClass("open");
break;
case 4:
$(this).addClass("open");
break;
}
$('#menu li').click(function() {
if( $(this).find("ul").css('display') == "none" ){
$('#menu li ul.menu').slideUp("fast");
}
$(this).find("ul").slideDown("slow");
});
$('#menu li.open a').on('click', function(e) {
var tabs = $(this).parent().find('ul');
if( tabs.css('display') == "none") {
e.preventDefault();
$('#menu li ul.menu').slideUp("fast");
tabs.slideDown("slow");
}
});
谢谢您的帮助!