在CoffeeScript中修复setTimeout

时间:2018-01-11 10:40:23

标签: javascript jquery coffeescript

我正在尝试将来自JS的this代码片段移植到Coffee,但是在设置超时函数中遇到了忽略代码的问题,在超时时根本没有添加任何类:

$ ->

  $('.click').click ->
    $span = $(this).closest('span')
    $this = $(this)

    if $span.hasClass('fa-star')

      $this.removeClass 'active'

      setTimeout (->
        $this.removeClass 'active-2'
      ), 30

      $this.removeClass 'active-3'

      setTimeout (->
        $span.removeClass 'fa-star'
        $span.addClass 'fa-star-o'
      ), 15

    else

      $this.addClass 'active'
      $this.addClass 'active-2'

      setTimeout (->
        $span.addClass 'fa-star'
        $span.removeClass 'fa-star-o'
      ), 150

      setTimeout (->
        $this.addClass 'active-3'
      ), 150

尝试提取功能,但也没有帮助。

1 个答案:

答案 0 :(得分:1)

问题似乎与jQuery代码有关。

这对你的html来说是错误的。

$span = $(this).closest('span')

将其更改为

$span = $(this).children().first()

DEMO