![](/img/trans.png)
[英]Why is this jQuery.animate() function not changing the visibility?
[英]Why jQuery.animate is synchronous?
為什么此代碼同步工作?
$this.animate( { 'left': '+=200px' } );
$this.animate( { 'top' : '+=200px' } );
我真的懷疑是否可以在JavaScript中同步執行功能。
和
doSomething();
doSomethingMore();
function doSomething() {
setTimeout(function() {
alert('doSomething finished');
}, 3000);
}
function doSomethingMore() {
setTimeout(function() {
alert('doSomethingMore finished');
}, 1000);
}
在函數doSomething完成之前,如何不執行函數doSomethingMore。 或類似的東西。
謝謝。
我只是在這里猜測,因為我也無法遵循jQuery源代碼。 :)
.animate()
將動畫添加到隊列中。 默認情況下是$.fx
。 當一個項目添加到隊列中時:如果是第一個,則運行它; 如果不是,它將一直等待直到它是隊列中的第一項。 jQuery完成動畫的運行后,它將從隊列中刪除第一個項目(即剛剛完成的動畫),然后運行第二個項目。
因此,它似乎只能同步運行。 如果在第二次調用.animate()
之后放置另一個語句,您會看到它實際上是立即執行的。 這也是.animate()
進行回調的原因。
還有其他功能可以讓您操縱隊列。 例如.stop()
和.queue()
。
您兩次調用該方法,因此它將按當前工作方式進行操作,使其按您希望其工作的方式工作,您必須在一個調用中執行此操作:
$this.animate({left: '+=200px',top : '+=200px'});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.