我有一个问题。 我使用具有以下结构的jquery superfish菜单
<div id="menu" class="ge-navigation-item">
<!-- navigation -->
<ul id="test" class="sf-menu sf-vertical sf-js-enabled sf-shadow">
<li><a href="index.html">Home</a></li>
<li><a href="#">About</a>
<ul>
<li><a href="index.html">Index</a></li>
<li><a href="#">Page</a>
<ul>
<li><a href="#">menu item</a></li>
<li><a href="#">menu item</a></li>
<li><a href="proef.html">menu item</a></li>
<li><a href="index.html">index</a></li>
<li><a href="#">menu item</a></li>
</ul>
</li>
<li><a href="page-fullwidth.php">Page - Full Width</a></li>
</ul>
</li>
<li><a href="showcase.php">Showcase</a></li>
</ul>
<!-- /navigation -->
</div>
我想要的是点击一个链接,菜单结构将是可见的
因此,点击index.html将在href index.html的所有链接上设置链接 但点击proef.html将在href proef.html上设置一个活动类 - 页面 - 关于
到目前为止,我已经尝试了这个但结果不好
var path = window.location.toString().split("/")
path = path[path.length - 1]
//alert (path);
if (path)
$("#test a[href='" + path + "']").addClass("actief");
$("#test ul li:has(a) a[href='" + path +
"']").parent().parent().parent().addClass("actief");
答案 0 :(得分:2)
欢迎使用stackoverflow。试试这个:
var path = window.location.pathname.split('/');
path = path[path.length-1];
if (path !== undefined) {
$("#menu3").find("a[href='" + path + "']").addClass("actief");
}
这应该将类应用于与当前url的最后一项匹配的任何链接。如果您正在寻找不同的行为,请详细说明!
<强>更新强>
实际上,看起来你需要这个:
var path = window.location.pathname.split('/');
path = path[path.length-1];
if (path !== undefined) {
$("#menu3")
.find("a[href$='" + path + "']") // gets all links that match the href
.parents('li') // gets all list items that are ancestors of the link
.children('a') // walks down one level from all selected li's
.addClass('actief');
}
这将把每个a
元素上的类放在链上。
答案 1 :(得分:1)
我们做了类似的事情:
$("#sample-menu-1").find("a[href='"+window.location.pathname+"']").each(function() {
$(this).parents('li').addClass("current");
$(this).closest('ul').css("visibility","visible").css("display","block");
});
它似乎可以正常工作,但是当鼠标悬停在菜单上时,菜单不会保持当前位置。
=== 更新 ===
在鼠标悬停在菜单
之后,似乎父级ul被重置为不显示