【发布时间】:2010-07-17 01:25:33
【问题描述】:
我刚刚对我刚刚发布的另一个帖子进行了修复,但这又造成了另一个问题。我正在开发具有多个级别的导航菜单。这是我正在使用的脚本:
$(document).ready(function(){
// attach the click handler for the menu
$(".left-navigation-holder li a[href='']:has(~ul)").click(toggleMenu);
// Expand menu for the current page:
var level1Selector = "#" + $("body").attr("menul1");
var level2Selector = "#" + $("body").attr("menul2");
var level3Selector = "#" + $("body").attr("menul3");
$(".left-navigation-holder li a:has(~ul"+ level1Selector +")").click();
$(".left-navigation-holder li a:has(~ul"+ level2Selector +")").click();
$(".left-navigation-holder li a:has(~ul"+ level3Selector +")").click();
});
// menu toggle function
function toggleMenu() {
//if ($(this).attr(href='#')) {alert("yes")} else {alert("no")}
$(this).siblings("ul").toggle();
$(this).closest("li").toggleClass("selected");
return false;
}
第一行通过说如果在菜单中的一个链接上有一个点击事件并且如果该链接有一个空的 href 属性和一个更下方的列表,那么它会触发 toggleMenu 以打开该级别。检查 href 值的原因是,如果为空,则打开菜单,如果不是,则将用户发送到 URL 值并且不切换菜单。当其他菜单只是在这里切换子菜单时,可以选择为某些菜单(并保留子级别)提供页面链接。
脚本的另一部分读取我在每个页面(menul1、menul2、menul3)的 body 标签中设置的属性值,以了解我们在菜单中的哪个页面,以便菜单打开正确的菜单级别页面加载时。
我遇到的问题是,因为第一行检查 href 属性的值,如果通过单击具有链接和子菜单的菜单调用加载的页面,则加载页面时不会打开该页面因为 href 有一个值。启动每个级别的 3 行现在仅在 href 值为空时起作用。
不知道该怎么办。帮助将不胜感激。我希望这已经足够清楚了。
谢谢!
【问题讨论】: