2

试图找出完成这项工作的最佳方法:

class Person

  constructor: (@el) ->
    @el = $(el)
    this.bind()

  bind: ->
    @el.find('.something').on 'click', ->
      $(this).hide()       # conflict!
      this.do_something()  # conflict!

  do_something: ->
    alert 'done!'

我知道我可以使用哈希火箭(=>),然后this.do_something从我的回调中访问,但随后与 冲突callback 'this',因此 jquery 试图选择对象,而不是element '.something'. 如何解决这个问题?

4

1 回答 1

3

您无法this引用不同的对象。通过将实例的this引用存储在辅助变量中来使用不同的标识符:

  bind: ->
    person = this
    @el.find('.something').on 'click', ->
      $(this).hide()
      person.do_something()
于 2013-04-17T15:09:32.763 回答