1

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

第1页第
1a 页 1b第2页第
2a页 。 . . 等等。






我需要 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>

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

可以在这篇文章中找到此问题的答案... JavaScript 菜单上的活动链接可用于父链接,而不仅仅是子链接

4

3 回答 3

1

我重做了你的 jQuery,因为它看起来过于复杂。看看这个 jsfiddle 上的结果,如果这就是你想要的,请告诉我!

$("#nav > li").click(function () {
    if ( $(this).hasClass("selected") ) {
        $(".selected").removeClass("selected");
    } else {
        $(".selected").children("ul").slideToggle();
        $(".selected").removeClass("selected");
        $(this).addClass("selected");
    }
    $(".selected").children("ul").slideToggle();
});

http://jsfiddle.net/PBKxy/

于 2013-07-24T13:37:39.457 回答
0

我很确定您的控制逻辑决定了哪个菜单项将在什么时候重新着色需要一些审查,因此我只更改了代码以实际更改下面的颜色。这是演示在菜单项 #2 上硬编码的效果的小提琴。

请注意,如果location.pathname以 a 结尾,/您可能想要引用元素URL[URL.length-2]而不是URL[URL.length-1].

<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(idx, ex) {
                            var current = $(ex).find('a');
                            if (current.href == window.location.href) {
                                current.css({
                                      backgroundColor: '#ccc'
                                    , color:           '#006'
                                });
                                $('#i'+i).prev('a').css({
                                      backgroundColor: '#ccc'
                                    , color:           '#006'
                                });
                            }
                        });
                }
            }
        });
</script>
于 2013-07-24T14:04:54.177 回答
0

你可以这样做:http: //jsfiddle.net/gUmYP/16/

$('#nav li a').each(function(){
            $(this).css('backgroundColor', '#006');
            $(this).css('color', '#CCC');
        });
        $(this).css('backgroundColor', '#ccc');
        $(this).css('color', '#066');
于 2013-07-24T13:38:24.543 回答