尝试找出最佳方法来完成这项工作:
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'
。如何解决这个问题?
答案 0 :(得分:3)
您无法让this
引用不同的对象。通过将实例的this
引用存储在辅助变量中,使用不同的标识符:
bind: ->
person = this
@el.find('.something').on 'click', ->
$(this).hide()
person.do_something()