Hilight菜单项

时间:2012-01-26 10:28:47

标签: javascript javascript-events

我有一个单页网站,其中包含以下菜单:

<ul id="menu-menu" class="nav">
    <li id="1"><a href="#">Item 1</a></li>
    <li><a href="#">Item 2</a>
        <ul>
            <li id="1" class="sub"><a href="#">Item 2-1</a></li>
            <li id="1" class="sub"><a href="#">Item 2-2</a></li>
            <li id="1" class="sub"><a href="#">Item 2-3</a></li>
        </ul>
    </li>
    <li id="1"><a href="#">Item 3</a></li>
    <li id="1"><a href="#">Item 4</a></li>
</ul>

菜单由javascript:

点亮
<script type="text/javascript">
 /* <![CDATA[  */   
    var J = jQuery.noConflict();
    J(document).ready(function(){

        J('.nav li:first').addClass('current');

        J('ul.nav').each(function() {
            J(this).find('li#1').each(function(i) {
                J(this).click(function(){
                    J(this).addClass('current');
                    J(this).siblings().removeClass('current');
                });
            });
        });
    }); 
    /* ]]> */  
</script>

问题在于,当我点击第3项而不是第2-2项时,第3项保持高亮。当我点击第1项时,第2-2项保持高亮。

任何想法如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

var J = jQuery.noConflict();
J(function(){
    J('ul.nav li:first').addClass('current');

    J('ul.nav li').click(function (e) {
        J('ul.nav li.current').removeClass('current'); 
        J(this).addClass('current');
        e.stopPropagation(); // prevent the event click from bubbling up
    });
}); 

答案 1 :(得分:0)

未经测试,但尝试替换

J(this).addClass('current');
J(this).siblings().removeClass('current');

J('ul.nav .current').removeClass('current');
J(this).addClass('current');

问题是兄弟选择器只找到兄弟姐妹,而不是其他元素。