2012-02-05 63 views
0

我正在製作一個單頁的網站,其中菜單是固定的,所以當用戶單擊鏈接時,它會向下滾動到頁面的該部分。用戶所在部分的菜單鏈接應具有不同的顏色。爲此我有班級「當前」。我試圖用jQuery addClass()和removeClass()來做這個改變,但我沒有運氣。我到目前爲止的代碼如下。切換頁面當前部分的菜單顏色

$(document).ready (function(){ 
    $(".about").click(function(){ 
     $(".home").removeClass("current"); 
     $(".about").addClass("current"); 
    }); 
}); 

編輯:

菜單HTML:

<nav id="nav_list"> 
<ul> 
<li class="home current"><a href="#">Home</a></li> 
<li class="about"><a href="#about">About</a></li> 
<li class="portfolio"><a href="#portfolio">Portfolio</a></li> 
<li class="testimonials"><a href="#testimonials">Testimonials</a></li> 
<li class="contact"><a href="#contact">Contact</a></li> 
</ul> 
</nav> 

DIV HTML:(有一個div去與每個菜單鏈接)

<div id="about" class="page"> 
<p>Lorem ipsum dolor sit</p> 
</div> 

EDIT2

CSS:

#nav_list .current a{ 
color: #D4D1FA; 
} 

我注意到,如果我刪除#nav_list,我沒有看到從一開始就在顏色的變化。

+4

後您的HTML。 – 2012-02-05 16:30:27

+0

它在這裏工作.http://jsfiddle.net/ylokesh/Vx3up/ – 2012-02-05 16:43:55

+0

那麼爲什麼它不工作,我在哪裏使用它... – Connor 2012-02-05 16:47:52

回答

1

嘗試此操作 - 它將所有列表項中的當前類刪除,並將該類添加到單擊的項中。

$("li").click(function(){ 
    $(".current").removeClass("current"); 
    $(this).addClass("current"); 
}); 

但要回答你的具體用例。將您的鏈接設置爲塊顯示。這會導致他們填充他們的列表項容器。然後監視鏈接點擊而不是列表項單擊。之前發生的事情是,點擊鏈接沒有觸發列表項容器的點擊,所以你的添加/刪除類代碼可能永遠不會觸發。通過填充區域,您可以捕獲所有點擊。

http://jsfiddle.net/hkZsL/

CSS

a { text-decoration: none; display: block; } 
li { padding: 4px; border: 1px solid gray; width: 100px; float: left; } 
.current { border: 1px solid red; } 

的JavaScript

$("a").click(function(){ 
    $(".current").removeClass("current"); 
    $(this).parent().addClass("current"); 
    return false; 
}); 
+0

不幸...我也在「this」的地方嘗試過「.about」 – Connor 2012-02-05 16:45:01

+0

@Connor - 剛剛更新了我的答案,看看是否更有意義 – mrtsherman 2012-02-05 16:48:54

+0

我已經將它設置爲顯示:block。我也嘗試過更新的代碼,但它仍然無法正常工作。 – Connor 2012-02-05 16:55:11