2011-01-27 107 views
2

它去有點像這樣:在jquery中停止父函數時阻止回調被阻止?

$("example").hover(function(){ 
     ("example").stop().show(/*More Code*/, callback()); 
    }, function(){ 
     ("example").stop().hide(/*More Code*/, callback()); 
    } 
) 

所以,如果鼠標是離開該區域之前,首先完成的動畫,將停止所有動畫,並跳過回調。有沒有辦法使用stop()並仍然執行回調函數?

回答

1

使用setTimeout定時在動畫結束時觸發而不是回調。

$("example").hover(function(){ 
     $("example").stop().show(1000); 
     setTimeout(function() { /* do something */ }, 1000); 
    }, function(){ 
     $("example").stop().hide(1000); 
     setTimeout(function() { /* do something */ }, 1000); 
    } 
); 

另一種選擇是使用.stop(true,true)而不只是.stop()

這將清除隊列,將動畫發送到最後並觸發回調。

$("example").hover(function(){ 
     $("example").stop(true,true).show(1000); 
    }, function(){ 
     $("example").stop(true,true).hide(1000); 
    } 
);