2011-12-25 77 views
2

我創建了這個腳本用於向上滾動jQuery,但是當您多次使用鼠標滑過和鼠標滑出時,腳本會進入循環,直到每次將鼠標懸停在該循環上時爲止。防止循環jQuery

我已經嘗試過尋找一個解決方案,但我沒有整理出來,這裏是代碼:

$(document).ready(function(){ 

    $('.desc').hide(); 

    $('.work').mouseover(function(){ 
     $('.desc', this).slideDown('900'); 
    }); 

    $('.work').mouseleave(function(){ 
     $('.desc', this).slideUp('900');  
    }); 
}); 

回答

4

嘗試使用.stop(),通知傳遞true同時作爲指定參數時,它會清除隊列(讀有關更多信息的文檔)並跳轉到最後。如果你不傳遞true作爲ARGS動畫將被排隊和執行的,所以你將面臨同樣的行爲,你所面對的時刻

$(document).ready(function(){ 

    $('.desc').hide(); 

    $('.work').mouseover(function(){ 
     $('.desc', this).stop(true,true).slideDown('900'); 
    }); 

    $('.work').mouseleave(function(){ 
     $('.desc', this).slideUp('900');  
    }); 
}); 
0

你需要每個動畫(效果基本show和了slideDown)之前添加stop()。在向動畫隊列添加新動畫之前,這個小函數會停止動畫!

0

在每個動畫之前添加stop(),這會清除動畫隊列。 http://api.jquery.com/stop/

$(document).ready(function(){ 

    $('.desc').hide(); 

    $('.work').mouseover(function(){ 
     $('.desc', this).stop().slideDown('900'); 
    }); 

    $('.work').mouseleave(function(){ 
     $('.desc', this).stop().slideUp('900');  
    }); 
}); 
0

.stop()將有助於在紙上,但動畫看起來還是生澀。當用戶實際「懸停」在你的元素上時,你真正需要的是延遲懸停事件以觸發動畫。有幾個jQuery插件。試試hoverIntent - sample。或者你可以自己寫,這也不是很難。

也FYI 900幾乎是一整秒 - 這是比有禮貌的動畫應該是更長的路。