我刚刚修改了我刚刚制作的另一篇文章,但这造成了另一个问题。我正在处理具有多个级别的导航菜单。这是我正在使用的脚本:
$(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值并且不切换菜单。这样就可以选择在其他菜单切换子菜单时为某些菜单设置页面链接(并保留子级别)。
脚本的另一部分读取我在每个页面上的body标签中设置的属性值(menul1,menul2,menul3),以了解我们菜单中的哪个页面,以便菜单打开正确的菜单级别当页面加载时。
我遇到的问题是因为第一行检查href属性的值,如果通过单击具有链接和子菜单的菜单调用加载的页面,则在加载页面时不会打开该页面因为href有一个值。启动每个级别的3行现在仅在href值为空时才起作用。
不确定该怎么做。帮助将不胜感激。我希望这很清楚。
谢谢!
答案 0 :(得分:0)
您似乎希望以相同的方式执行两项不同的操作 - 您希望通过单击来禁用切换带有链接的菜单,但是您也尝试通过单击它来打开它。
与其打电话click()
打开当前页面的每个菜单,您是否可以改为拨打toggleMenu
?