jQuery的手风琴菜单:设置活动类
问题描述:
我有一个折叠式菜单:jQuery的手风琴菜单:设置活动类
<ul id="menu">
<li>
<a href="#" class="highmenu">Menu1</a>
<ul class="sub">
<li class="submenulink">Menu1Link1</li>
<li class="submenulink">Menu1Link2</li>
</ul>
</li>
<li>
<a href="#" class="highmenu">Menu2</a>
<ul class="sub">
<li class="submenulink">Menu2Link1</li>
<li class="submenulink">Menu2Link2</li>
</ul>
</li>
</ul>
而这里的jQuery脚本我使用:
$(document).ready(function() {
var pathname = window.location.pathname;
$("#menu ul").hide();
$("#menu a[href='" + pathname + "']").parents(".sub").show();
$("#menu li a").click(function() {
var checkElement = $(this).next();
if ((checkElement.is("ul")) && (checkElement.is(":visible"))) {
return false;
}
if ((checkElement.is('ul')) && (!checkElement.is(':visible'))) {
$("#menu ul:visible").slideUp("normal");
checkElement.slideDown("normal");
return false;
}
});
});
我想有是,当特定子打开,相应的高级菜单将被设置为highmenu active
类,当子被隐藏时,活动类将被删除。
任何帮助将不胜感激,谢谢!
答
这个怎么样。你点击一个链接,每次从所有链接中删除所有的活动类,那么它仅适用于相应的一个:
var pathname = window.location.pathname;
$("#menu ul").hide();
$("#menu a[href='" + pathname + "']").parents(".sub").show();
$("#menu li a").click(function() {
$("#menu li a").removeClass("active");
$(this).addClass("active");
var checkElement = $(this).next();
if ((checkElement.is("ul")) && (checkElement.is(":visible"))) {
return false;
}
if ((checkElement.is('ul')) && (!checkElement.is(':visible'))) {
$("#menu ul:visible").slideUp("normal");
checkElement.slideDown("normal");
return false;
}
});
工作小提琴这里:http://jsfiddle.net/jKGNA/
谢谢!它可以工作,但是当我点击其中一个子链接时,'highmenu active'不再有效。有没有人有修复? – user1428033
不太确定你的意思。通过子链接你是指类“submenulink”(如Menu1Link1)的元素?你有没有改变html在子菜单中包括锚标签(如
如果是这样,则可以通过单击非顶级菜单项来触发事件处理程序。尝试将第4行和第6行(我的示例)中的选择器更改为$(“a.highmenu”)。 – bm1729