Jquery菜单问题
问题描述:
我刚刚修复了另一篇文章,但是这造成了一个问题。我正在研究一个多层次的导航菜单。下面是我使用的脚本:Jquery菜单问题
$(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值为空时才起作用。
不知道该怎么做。帮助将不胜感激。我希望这很清楚。
谢谢!
答
您似乎想要以同样的方式完成两件不同的事情 - 您想要禁用通过单击链接来切换链接的菜单,但是也可以通过单击它来尝试打开它。
与其打电话click()
打开当前页面的每个菜单,您是否可以不直接拨打toggleMenu
?
我试过了: $(“。left-navigation-holder li a:has(〜ul”+ level1Selector +“)”)。toggleMenu(); 它没有工作。我收到一个错误。 – Ben 2010-07-17 01:36:29
好的,我修好了。 我添加了一条线来启动另一个事件,加载: $(“。left-navigation-holder li a:has(〜ul)”)。load(toggleMenu);然后我在检查正文中的属性时使用了load()函数: $(“。left-navigation-holder li a:has(〜ul”+ menuSelector +“)”)。 – Ben 2010-07-17 01:49:58