为多次呈现的主干视图创建 jQuery 点击事件的最佳方法是什么?似乎我应该在视图的初始化程序中使用 $().on() ,但这不起作用,除非我在渲染后调用它。
基本上,我正在渲染一个表格,并检查行上的点击事件。这是我正在尝试的(在咖啡脚本中)。这不起作用 -
class MyGridView extends Backbone.View
el: '#myGrid'
template: _.template(TableTmpl)
initialize: ->
# $('tr',@el).on 'click', -> console.log($(@).attr('model')) # WRONG
$(@el).on 'click', 'tr', -> console.log($(@).attr('model')) # CORRECT
render: ->
$(@el).empty()
$(@el).append(@template({data: @collection.getPage()}))
这可行,但这会创建孤立的点击事件吗?
class MyGridView extends Backbone.View
el: '#myGrid'
template: _.template(TableTmpl)
render: ->
$(@el).empty()
$(@el).append(@template({data: @collection.getPage()}))
$('tr',@el).click -> console.log($(@).attr('model'))
更新:
我缺少 $().on() 的参数,这就是它不起作用的原因。我还尝试了事件,这似乎是一种更好的处理方式,其工作方式如下:
class MyGridView extends Backbone.View
el: '#myGrid'
template: _.template(TableTmpl)
events: {'click tr', 'selectModel'}
selectModel: ->
model = $(e.target).parent().attr('model')
console.log(model)
render: ->
$(@el).empty()
$(@el).append(@template({data: @collection.getPage()}))
$('tr',@el).click -> console.log($(@).attr('model'))