3

我知道这个问题之前已经回答过了,但是由于 div 的数量和类的数量,我无法弄清楚如何用我的代码来解决这个问题。如何使活动页面具有不同的背景颜色。我正在使用响应式 twitter bootstrap (2) 框架,因此您必须将查看窗口拉出才能看到顶部的所有选项卡。

jsFiddle 是:http: //jsfiddle.net/2bhnQ/1/

我的代码如下:

<div class="navbar navbar-inverse navbar-static-top">
<div class="navbar-inner">
    <div class="container">
        <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse" href="#">
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
        </a>
        <a class="brand" href="index.php">HOME</a>
        <div class="nav-collapse">
            <ul class="nav">
                <li class="dropdown">
                    <a href="people.php" class="dropdown-toggle" data-toggle="dropdown">People<b class="caret"></b></a>
                    <ul class="dropdown-menu">
                        <li><a href="people.php">All</a></li>
                        <li><a href="people.php#staff">Staff</a></li>
                        <li><a href="people.php#grad">Graduate Students</a></li>
                        <li><a href="people.php#undergrad">Undergraduate Students</a></li>
                        <li><a href="people.php#visitors">Visitors and Affiliates</a></li>
                        <li><a href="people.php#interns">Interns</a></li>
                        <li><a href="people.php#alumni">InfoLab Alumni</a></li>
                    </ul>
                </li>
                <li class="dropdown">
                    <a href="publications.php" class="dropdown-toggle" data-toggle="dropdown">Publications<b class="caret"></b></a>
                    <ul class="dropdown-menu">
                        <li><a href="publications.php">All</a></li>
                        <li><a href="publications.php#start-and-omnibase">START and Omnibase</a></li>
                        <li><a href="publications.php#question-answering">Question Answering</a></li>
                        <li><a href="publications.php#semantic">The Semantic Web</a></li>
                        <li><a href="publications.php#other">Other Publications</a></li></ul>
                </li>
                <li>
                <a href="start-system.php">How START works</a></li>
          </ul>
        </div>
    </div>
</div>

我试过做这样的事情,但没有奏效。(这只是另一个stackoverflow的答案,所以我猜它会有所帮助,但如果有帮助,我可以使用 $(location).attr('href') 或任何其他选项。)

$(document).ready(function(){
alert(window.location.pathname);
$(".navbar navbar-inverse navbar-static-top .navbar-inner .container .nav-collapse .nav li a").each(function(){
    if($(this).attr("href")==window.location.pathname)
        $(this).addClass("active");
}) })

作为我工作第一个月的新手程序员,非常感谢任何帮助。谢谢。

4

3 回答 3

1

如果你想用 jquery 来做,请尝试使用 href 选择器。它是这样的:

$(document).ready(function(){
$('a[href="publications.php#start-and-omnibase"]').css('background','red');
});

您始终可以在“a”标签之前添加一些选择器,因此它仅适用于特定元素或区域。例如:

$('#menu a[href="publications.php#start-and-omnibase"]').css('background','red');

应该像魅力一样工作,只有你需要做的是设置这个 href 路径动态。

    $(document).ready(function(){
     $('a[href="'+url+'"]').addClass('active');
    });

当然,您需要解析这个 url 变量以正确的值。希望能帮助到你 :)

我现在还看到您问在服务器端制作活动项目是什么意思。这意味着您在服务器端(使用 PHP 或其他)生成该菜单并将其发送到客户端并设置所有类时,在当前处于活动状态的项目上添加类“活动”。如果菜单不是静态的,并且它总是由某些服务器端语言生成,具体取决于从数据库或任何其他方式收集的菜单项,在生成菜单项时,您还可以检查用户的当前位置是否与当前菜单项 href 相同,如果是,您可以轻松将此项目的类别设置为活动。

于 2013-08-01T20:26:42.670 回答
1

$(".navbar navbar-inverse navbar-static-top .navbar-inner .container .nav-collapse .nav li a") 这不会针对您要查找的内容。如果你想像你需要的那样具体: $(".navbar.navbar-inverse.navbar-static-top .navbar-inner .container .nav-collapse .nav li a")

选择器中的空格表示层次结构,如果您想要一个元素具有多个类,则在类之间不留空格。.navbar.navbar-inverse.navbar-static-top 是所有 3 个类的 div。

最有可能的是,您可以安全地只定位 .navbar 而不是 .navbar.navbar-inverse.navbar-static-top

于 2013-08-01T16:57:26.423 回答
1

a中没有.navbar-inverse嵌套.navbar,因此您的选择器没有找到任何东西。

如果没有您的完整设置,我很难测试,但试试这个:

$(document).ready(function(){
alert(window.location.pathname);
$(".navbar .navbar-inner .container .nav-collapse .nav li a").each(function(){
    if($(this).attr("href")==window.location.pathname)
        $(this).addClass("active");
}) })
于 2013-08-01T16:51:31.657 回答