2013-08-03 190 views
0

我使用此示例http://jsfiddle.net/mekwall/up4nu/使我的菜單鏈接突出顯示爲用戶向下滾動。問題是示例突出顯示「li」標籤,但我只想要突出顯示「a」標籤。所以我嘗試這樣做:製作菜單按鈕突出顯示

if (lastId !== id) { 
      lastId = id; 
      // Set/remove active class 
      menuItems 
      .removeClass("active") 
      .end().filter("[href=#"+id+"]").addClass("active"); 
     } 

我從原始代碼中取消父(),但這仍然沒有達到我想要的。我對jQuery不太瞭解,所以我不確定還有什麼要添加/刪除的,所以只有'a'標記突出顯示而不是'li'標記

+1

像這樣:http://jsfiddle.net/up4nu/1347/? – Joe

+0

謝謝,你也說得對。 – user977151

回答

1

這裏的工作小提琴,突出​​代替li elementsFiddle

我所做的是

  • 改變了HTML,所以它是默認有類活躍的 代替第一li元素第一a元素:

    <a class="active" href="#">Top</a>

  • 改變了CSS,所以#top-menu li.active a的規則變成了
    #top-menu li a.active(所以它們適用於a元素)。

  • 改變了JavaScript和所有這一切的工作:

    menuItems 
         .removeClass("active") 
         .filter("[href=#"+id+"]").addClass("active"); 
    
+0

謝謝,我沒有意識到我需要刪除end()函數 – user977151

0

您的result on JSFiddle

.parent()(42-43行)有錯誤。

我也適應了HTML標記對應:

<li> 
    <a href="#" class="active">Top</a> 
</li> 

和CSS:

//#top-menu li.active a { 
#top-menu li a.active { 
+0

@ user977151你指定了'menuItems = topMenu.find(「a」)',所以當你想在'a'標籤上設置/刪除'active'類時,你不需要調用'.parent()'。 – glautrou

+0

我修正了之前的css和html部分,我只是沒有意識到我需要刪除jquery工作的end()函數。我已經刪除了父母()在我的試驗和錯誤...因此,爲什麼我給你沒有父母的jquery代碼() – user977151