2010-07-17 90 views
1

我刚刚修复了另一篇文章,但是这造成了一个问题。我正在研究一个多层次的导航菜单。下面是我使用的脚本: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值为空时才起作用。

不知道该怎么做。帮助将不胜感激。我希望这很清楚。

谢谢!

回答

0

您似乎想要以同样的方式完成两件不同的事情 - 您想要禁用通过单击链接来切换链接的菜单,但是也可以通过单击它来尝试打开它。

与其打电话click()打开当前页面的每个菜单,您是否可以不直接拨打toggleMenu

+0

我试过了: $(“。left-navigation-holder li a:has(〜ul”+ level1Selector +“)”)。toggleMenu(); 它没有工作。我收到一个错误。 – Ben 2010-07-17 01:36:29

+0

好的,我修好了。 我添加了一条线来启动另一个事件,加载: $(“。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