爲多次呈現的骨幹視圖創建jQuery點擊事件的最佳方式是什麼?看起來我應該在視圖的初始化程序中使用$()。on(),但這不起作用,除非在渲染後調用它。用主幹視圖管理jQuery點擊事件
基本上,我正在渲染一個表格,並檢查行上的點擊事件。這是我正在嘗試的(在咖啡文本中)。這是行不通的 -
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'))
UPDATE:
我缺少一個參數$()的(),這就是爲什麼它沒有工作。我也嘗試過的事件,這似乎是處理這更好的方式,這工作就像:
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'))
謝謝 - 這似乎是最好的方式。 –