2012-02-12 381 views
1

我有這個奇怪的問題,每當我滾動我的鼠標在下面的代碼中的每個鏈接幾次,鏈接將繼續懸停效果太長,並反覆應用它。我擁有它,這樣jquery會在他們的類別被移動時改變它們的類,以便突出顯示鼠標移動的那個。jQuery重複懸停效果

<ul>   
    <li><a href="#" class="current">Home</a></li>  
    <li><a href="#" class="hover">News</a></li>  
    <li><a href="#" class="hover">Media</a></li>  
    <li><a href="#" class="hover">About</a></li> 
</ul> 

這是jQuery代碼:

$(document).ready(function() { 
    $('.hover').hover(function() { 
     $(this).switchClass('hover', 'hover-on', 250); 
    }, function() { 
     $(this).switchClass('hover-on', 'hover', 250); 
    }); 
}) 

而CSS類只包含一個不同的背景顏色。

請嘗試以下鏈接查看我的意思,我不知道如何描述行爲。通過徘徊幾次,只需將鼠標在幾個鏈接上來回移動即可。 http://74.63.212.104/nav/

+0

在switch類之前添加.stop() – Cristy 2012-02-12 19:00:44

+0

在每個'.switchClass'調用之後添加'return false;'。 – 2012-02-12 19:01:09

+0

'.stop()'使當前動畫直接停止,所以試試! – 2012-02-12 19:05:35

回答

4

在開始動畫之前實現jQuery .stop()會清除該元素的動畫隊列中剩下的任何內容。

$(document).ready(function() { 
    $('.hover').hover(function() { 
     $(this).stop(true, false).switchClass('hover', 'hover-on', 250); 
    }, function() { 
     $(this).stop(true, false).switchClass('hover-on', 'hover', 250); 
    }); 
}); 

編輯:說明的.stop()

參數

.stop([clearQueue] [, jumpToEnd])

clearQueue - 一個布爾指示是否刪除排隊動畫以及。默認爲false。

jumpToEnd - 指示是否立即完成當前動畫的布爾值。默認爲false。

+0

謝謝!這工作,不得不交換真實和錯誤的參數。這正是我所期待的! – 2012-02-12 19:14:42