2012-01-16 98 views
0

我正在使用該jQuery垂直菜單庫www.dynamicdrive.com/dynamicindex1/ddsmoothmenu.htm我想完成所選路徑的選擇。比方說,我去通過菜單(在演示在該網站上)由路徑:jQuery - 在動態創建的菜單中更改菜單項的路徑的CSS

Folder 2 > Folder 2.1 > Folder 3.1.1 > SubItem 3.1.1.1 

當我點擊SubItem 3.1.1.1我想的是,所有以前的項目(從上面的路徑)改變了他們的背景。下面的代碼只選擇最上面的項目。如何解決這個問題?

$('#nav > li').click(function() { 
     $(this).children('a').css('background-color', 'red'); 
     $(this).parents('ul').each(function() { $(this).prev('a').css('background-color', 'red'); }); 
    }); 

。在這種情況下,我的代碼失敗了。

回答

1

菜單似乎是有組織的方式,單擊事件會冒泡從孩子li於母公司li,所以你只需要點擊事件綁定到所有菜單項,並設定背景爲當前元素:

$('#nav li').click(function() { 
    $(this).children('a').css('background-color', 'red'); 
}); 

你仍然可能想取消設置紅色背景,當您點擊另一個菜單項

+0

奇怪。我使用調試器(如Firebug)在jQuery垂直菜單庫鏈接上測試了它:('$('#smoothmenu2 li')。click(function(){$(this).children('a')。 css('background-color','red');})'),它工作完美。嘗試一下和你自己。如果你看不到有什麼問題,請嘗試創建一個可以重現問題的小提琴 – ori 2012-01-16 17:33:18

+0

根據不需要的紅色背景:http://stackoverflow.com/questions/8884987/jquery-strange-function-behaviour – Tony 2012-01-16 19:15:15

0

解決嘗試#1:

$('#nav a').click(function() { 
     $(this).css('background-color', 'red'); 
     $('a.selected').css('background-color', 'red'); 
    }); 
+1

不會因爲菜單的結構化方式:'li> a','li> ul','ul'>'li',事件從'a'點擊到'li'到'ul'到'li '等 – ori 2012-01-16 17:36:00