我正在制作一个菜单,在这个菜单中我想要“滑动切换”一些选项卡(菜单项)的选项。 因此,我有一个“中学”选项卡,当用户单击该选项卡时,他/她将“显示”一些其他选项卡。
唯一的问题是菜单是自动生成的,并且“中学”有一个我无法删除的 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");
}
});
感谢您的帮助!
最佳答案
要取消 href,如果稍后需要 href 属性,您可以指定一些事件,单击,悬停...,并且要重定向,您可以使用 window.location = "otherstuff.html"
关于javascript - 防止 href 链接 jQuery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14822090/