javascript - jQuery 将事件类添加到导航,现在导航不起作用

标签 javascript jquery css ruby-on-rails ruby-on-rails-4

所以,我希望我的面包屑导航通过根据用户所在的页面使用不同的颜色来向用户显示他/她所在的页面。 IE。如果在主页上,主页链接是灰色的,而其他链接保持黑色。

为此,我已将以下代码添加到我的应用中:

$(function(){

    $('.breadcrumb li a').on('click', function(e){

        e.preventDefault(); // prevent link click if necessary?

        var $thisA = $(this);
        var $li = $thisA.parent('a');

        if (!$thisA.hasClass('active'))
        {
            $li.find('a.active').removeClass('active');
                $thisA.addClass('active');
        }

    })

})

但是,使用上面的代码,当我也单击事件时,它永远不会释放事件类,例如它们最终都变成灰色。此外,该页面不会切换,它会停留在主页上,但主页和事件会显示为灰色。

CSS:

.breadcrumb li a.active {    color: #999999;}

html

 <ul class="breadcrumb">
     <li>
       <a class="active" href="/profiles"> Home</a>
     </li>
     <li>
       <a class="active" href="/events"> Events</a>
     </li>
     <li>
       <a href="/inbox"> Messages</a>
     </li>
     <li>
       <a href="/welcome"> My Profile</a>
     </li>
   </ul>

最佳答案

改变

var $li = $thisA.parent('a');

var $li = $thisA.parents('ul');

因为这条线

 $li.find('a.active').removeClass('active');

寻找一个 child a.active 而你原来的 $li 将是空的,因为你的原始行试图找到一个 a是被点击的 a 的父级。

编辑

关于突出显示当前页面的资源:

http://hicksdesign.co.uk/journal/highlighting-current-page-with-css

$("a[href*='"+ location.pathname + "']").addClass("current"); 来自 highlighting the current page in a list of links using css / html

http://www.eznetu.com/current-link.html#

关于javascript - jQuery 将事件类添加到导航,现在导航不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20643681/

相关文章:

css - 根据分辨率重新排列 Bootstrap 标记

javascript - 语义用户界面下拉列表被输入字段覆盖

javascript - 平滑滚动不工作 jQuery

php - Ajax 数组到 PHP 等于 null

javascript - PHP:关联数组到数值数组

jQuery Animate 导致元素向下跳转

javascript - 如何对 id 定义为 php 函数的元素使用 javascript?

javascript - 如何交错动画并在每次迭代时同时触发两个动画

jquery - Socket.IO类型错误: Cannot read property 'broadcast' of undefined

javascript - 如何转换 Y-m-d H :i to 20-12-2019 1:45 PM in Laravel