0

我正在尝试在咖啡脚本中使用

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

au naturale JS 中的相同内容

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

我想在动画完成后执行控制台日志。但是这里的这个片段从不传递控制台消息(通常),更不用说动画完成时了。

任何人都知道如何正确使用承诺对象?

第二次失败尝试

  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' 
4

1 回答 1

2

这是你的arguments.callee参数.fadeIn()

如果你把它拿出来,它会起作用......见http://jsfiddle.net/alnitak/9VQ48/

于 2012-07-22T21:05:13.573 回答