2012-07-22 68 views
0

我想在的CoffeeScript使用:不適當地使用jQuery promise對象。不知道爲什麼

$(this).hide().each (index) -> 
    $(this).delay(index * 100).fadeIn 1000, arguments.callee 
    $(this).promise().done -> console.log 'hey trip' 

同樣的事情在太子港博納自然JS

$(this).hide().each(function(index) { 
    $(this).delay(index * 100).fadeIn(1000, arguments.callee) 
    }); 
    $(this).promise().done(function() {console.log 'hey trip' }); 

而且我想執行的控制檯日誌一旦動畫完成。但是這段代碼從來沒有提供控制檯消息(通常),更不用說當動畫完成時。

任何人都知道如何正確使用promise對象?

其次失敗嘗試

promise = new $.Deferred -> 
    promise.done -> console.log 'hey trip' 

    promise.resolve($(this).hide().each (index) -> 
    $(this).delay(index * 100).fadeIn 3000, arguments.callee 
) 

三沒有變化

dfd = $.Deferred -> 
dfd.done(
    $(this).hide().each (index) -> 
    $(this).delay(index * 100).fadeIn(3000, arguments.callee) 
).done -> console.log 'hey trip' 

四沒有變化

$.when(
    $(this).hide().each (index) -> 
    $(this).delay(index * 100).fadeIn(3000, arguments.callee) 
).then -> console.log 'hey trip' 
+0

這是CoffeeScript的? – Alnitak 2012-07-22 20:17:45

+0

是的,非常抱歉。我更新了我的答案。 – Trip 2012-07-22 20:18:20

+0

這與活動委派沒有關係...... – 2012-07-22 20:18:43

回答

2

這是您的arguments.callee參數.fadeIn()

如果你把說出來,它的工作原理...查看http://jsfiddle.net/alnitak/9VQ48/

+0

工作正常! arguments.callee如何取消它!!哇,非常感謝那個Alnitak。我欠你一個人情。 – Trip 2012-07-22 21:08:53

+0

@Trip我還沒有想出來。也許你不能將完成回調和承諾混合在一起?無論如何,'.callee'在這種情況下似乎沒有意義? – Alnitak 2012-07-22 21:10:59

+0

我從未知道。再次感謝:D – Trip 2012-07-22 21:13:08

相關問題