我的問題:jquery:等待一個函數來完成
我有幾個(告訴10)元素。將它們中的每一個懸停在一起執行一些具有動畫的功能。 我確實想這樣做,如果某個元素的函數(和動畫)正在運行,則懸停其他元素不會執行該函數。
例如:我徘徊了一個元素'2'。動畫開始。隨着動畫的持續,我懸停元素'3','4'和'5'。鼠標光標停留在'5'處。
我需要什麼,當元素'2'的動畫結束,並且光標保持在'5'以上時,五個動畫自動啓動。
我做了這麼:
var blocked = 0;
$(".my_element").live('hover',function(){
if(blocked == 0){
blocked = 1;
$(this).find('.content').animate({left:"-=100px"}, function() {
blocked = 0;
});
}, function(){
});
但功能完成後,下一個功能不啓動,直到我扭動鼠標。誰能幫忙? thx
當後續的事件被觸發,你的if語句返回false,那麼該函數的執行結束。看看改變你的if(阻塞== 0)爲一個while循環(在循環中睡眠)。 – hafichuk
你將不得不創建一個隊列...當你懸停時,你添加到隊列並觸發動畫。如果動畫被阻止(已經運行),那麼它不會再次觸發。當一個動畫完成時,它會運行隊列中的下一個(或者如果沒有剩下的話就放開)。我不想爲你編寫所有的代碼,但是這可能會給你一個好主意。 – Fosco
帶隊列的解決方案很有趣......但它怎麼實現......) – Sobakinet