2012-01-16 89 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