2010-07-17 155 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