我剛剛修復了另一篇文章,但是這造成了一個問題。我正在研究一個多層次的導航菜單。下面是我使用的腳本: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值爲空時才起作用。
不知道該怎麼做。幫助將不勝感激。我希望這很清楚。
謝謝!
我試過了: $(「。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