javascript菜单上的Active Link工作于父链接而不仅仅是子链接

时间:2013-08-01 17:33:08

标签: javascript css css3 navigationbar

我正在尝试为我的网站完成导航。我附上了jsfiddle代码,向您展示我现在拥有的代码。我的问题是我的孩子链接在他们想到的时候会变成灰色,但是,当我点击那个灰色时,我想做出顶级链接。我标记页面的方式就像这样

Page1
  Page1a
  Page1b
Page2
  Page2
.
.
.
ETC.

我需要将Page1和Page2变为灰色,就像子级别一样。如果有人能帮助我,我会非常感激。谢谢你的时间。

http://jsfiddle.net/gUmYP/

<script type="text/javascript">
    $('#body').ready(function(){
            var URL = location.pathname.split("/");

            URL = URL[URL.length-1];
            //<![CDATA[
            for(var i = 0; i < 11; i++){ // 4 = number of items, if you add more increase it, make number 1 larger than total items.
                if ((URL.indexOf(i) != -1) && (!$('#i'+i).is(':visible'))) {
                    $('#nav ul:visible').slideUp('normal');
                    $('#i'+i).slideDown(0);
                    $('#i'+i)
                        .find('li')
                        .each( function() {
                            var current = $(this).find('a')[0];
                            if (current.href == window.location.href)
                                current.style.backgroundColor = "#ccc";

                            current.style.color = "#006";
                        });
                }
            }
        });
</script>

之前的问题在这里,但从未完全回答: Highlight Links on Navigation

不幸的是,下面的答案都没有解决我的问题,有些已经使它现在突出显示父链接,但它使其他功能无法正常工作。当我将鼠标悬停在所有内容上时,我需要菜单仍以黄色突出显示,我需要在不活动时仍然是浅蓝色的子菜单,并且我需要所有活动链接(父或子)以显示它们是活动的灰色突出显示链接。有谁知道解决所有这些问题的解决方案?

1 个答案:

答案 0 :(得分:2)

看看这个JSFiddle

$('#nav li a').click(
   (...)

   // Here I removed the "active" class from all siblings "li"
   $(this).parent().siblings().removeClass("active");

   (...)

   // Here I add the "active" class to this "li"
   $(this).parent().addClass("active");

   (...)
)

注1:新的JSFiddle