2013-12-17 40 views
1

因此,我希望我的面包屑导航根据他们所在的页面使用不同的颜色来向用户显示他/她所在的页面。即如果在家中,家庭链接是灰色的,而其他人则保持黑色。jQuery将活动类添加到导航,现在导航不工作

要做到这一点,我下面的代码添加到我的应用程序:

$(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> 
+0

你能不能给我们呈现的HTML? – Nico

+0

Nico,确定更新信息。 –

+0

如果你放置“event.preventDefault”,页面将不会切换......这是 – Julius

回答

1

变化

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

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

,因为这条线

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

寻找孩子a.active和因为你原来的线路试图找到一个a那就是点击a的父母原来的$li将是空的。

编辑

资源凸显当前页面:

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#