【发布时间】:2013-01-31 13:40:42
【问题描述】:
我发现了一些非常简单的菜单代码,并且在没有插件的情况下仅使用 jquery 就可以很好地工作。 我想做的是使其具有粘性,以便在链接到新页面时,该页面将菜单(如有必要)扩展到链接的项目,并在当前 window.location 与标签匹配时将该项目突出显示为活动的链接。 我一直在寻找 Dom 控制台,但我认为如果幸运的话,一定有一个更简单的 jquery 解决方案。任何关于如何实现这一目标的建议都非常感谢。 谢谢
$(document).ready(function() {
$('#menu ul').hide();
/* Note the following three lines added as working solution to original question. */
/* works for fully qualified url: i.e. http://www.mydomain.com/mypage.ext */
/* also note that addClass('current') requires .current class in your css */
var currentLink = $("a[href='" + location.href + "']");
currentLink.parents("ul:hidden").slideDown("normal");
currentLink.filter('a:first').addClass('current');
/* end of solution fix */
$('#menu li a').click(
function() {
var openMe = $(this).next();
var mySiblings = $(this).parent().siblings().find('ul');
if (openMe.is(':visible')) {
openMe.slideUp('normal');
} else {
mySiblings.slideUp('normal');
openMe.slideDown('normal');
}
});
});
菜单如下:
<ul id="menu">
<li><a href="#">1</a></li>
<li><a href="#">2</a></li>
<li><a href="#">3</a>
<ul class="submenu">
<li><a href="#">3-1</a>
<ul>
<li><a href="#">3-1-1</a></li>
<li><a href="#">3-1-2</a></li>
<li><a href="#">3-1-3</a></li>
</ul>
</li>
<li><a href="#">3-2</a>
<ul>
<li><a href="#">3-2-1</a></li>
<li><a href="#">3-2-2</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="#">4</a></li>
<li><a href="#" title="">5</a>
<ul>
<li><a href="#">5-1</a></li>
<li><a href="#">5-2</a></li>
<li><a href="#">5-3</a></li>
</ul>
</li>
<li><a href="#" title="">6</a>
<ul>
<li><a href="#">6-1</a></li>
<li><a href="#">6-2</a></li>
<li><a href="#">6-3</a></li>
</ul>
</li>
<li><a href="#" title="">7</a></li>
<li><a href="#" title="">8</a>
<ul>
<li><a href="#">8-1</a></li>
<li><a href="#">8-2</a></li>
<li><a href="#">8-3</a></li>
</ul>
</li>
<li><a href="#" title="">9</a></li>
</ul>
【问题讨论】:
-
我认为你可以使用
window.location.pathname来识别当前页面,然后在适当的ul上解析调用slideDown()的路径即可。您能否给我们提示一下您的页面 URL 的外观,以便我们提供更具体的答案? -
链接要么是绝对的,要么只是相对的。我可以从 php 创建。我还可以为当前页面创建一个类,所以我猜它只是对我正在寻找的当前项目的扩展,但在 Jquery 中完成这一切会更优雅。