2012-01-14 55 views
1

我想要做的是,當我將鼠標懸停在鏈接上時,使其右邊框的顏色變化以及使上一鏈接的邊框顏色變化。不確定爲什麼jQuery .prev()不起作用

<div id="navbar"> 
    <ul> 
     <li><a href="#">News</a></li> 
     <li><a href="#">Gigs</a></li> 
     <li><a href="#">Gallery</a></li> 
     <li><a href="#">About</a></li> 
     <li><a href="#">Contact</a></li> 
     <li><a href="#">Social</a></li> 
    </ul> 
</div> 

而這裏的JavaScript的:

$("li a").hover(function() { 
    $(this).animate({ 
     color: '#0099FF', 
     borderRightColor: '#0099FF' 
    }, 500); 

    $(this).prev().animate({borerRightColor: '#0099FF'}, 500); 

}, function() { 
    $(this).animate({ 
     color: '#FFFFFF', 
     borderRightColor: '#FFFFFF' 
    }, 500); 

    $(this).prev().animate({borerRightColor: '#FFFFFF'}, 500);  
}); 

任何幫助或建議,將不勝感激,謝謝!

+0

你要找的:'$(本).parent()上一個()孩子( 'A:第一')' – 2012-01-14 18:56:31

回答

4

選擇器li a選擇每個<a>元件。 .prev()選擇以前的兄弟姐妹,而不是「集合中的上一個元素」,並且因爲他們沒有兄弟姐妹,而只有父母,所以沒有以前的元素用於<a>。試試這個:

$(this).closest('li').prev().children().animate(...); 

而且,你已經使用borerRightColor代替borderRightColor

+0

謝謝爲你的幫助:) – GhostPineapple 2012-01-14 19:09:04

+2

如果這個答案解決了你的問題,你會介意嗎?[標記爲接受?](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work)乾杯! – 2012-01-14 19:13:21

1

documentation for .prev()

描述:獲取的每個元件的緊接在前的兄弟集合中的匹配元素,任選地通過一個選擇器過濾的。

鏈接不是兄弟姐妹。

$("li").hover(function() { 
     $(this).children().animate({ 
        color: '#0099FF', 
        borderRightColor: '#0099FF' 
         }, 500); 
     $(this).prev().children().animate({borerRightColor: '#0099FF'}, 500);  
}, function() {  
     $(this).children().animate({ 
        color: '#FFFFFF', 
        borderRightColor: '#FFFFFF' 
         }, 500); 
     $(this).prev().children().animate({borerRightColor: '#FFFFFF'}, 500);  
}); 

Here's a demo on jsFiddle。我把它放在<li>上,所以你不會遍歷整個地方。

+0

非常感謝! – GhostPineapple 2012-01-14 19:15:32

+0

如果這個答案解決了你的問題,你會介意將它標記爲已接受嗎?乾杯! – Sinetheta 2012-01-14 19:21:27

0

this上下文是指<a>元素被徘徊,而不是<li><a>元素沒有以前的兄弟。

使用parent方法來訪問<li>

$(this).parent()......