骨干事件没有被视图内的jquery点击事件触发
我不知道为什么jQuery点击事件的视图内的事件不会触发..
我有这样的骨干观点:
class TreeList extends Backbone.View
el: "#tree-list"
events:
"click li span":"toggleTree"
"click li .select":"selectChannel"
template: _.template """
<ul id="tree"></ul>
"""
initialize: =>
$(@el).undelegate('li span', 'click');
$(@el).undelegate('li .select', 'click');
$("body").css "cursor", "progress"
@render()
render: =>
$(@el).html @template
_.each @collection.models, (model) =>
item = new TreeListItem model:model
$("#tree").append item.render()
if model.attributes.selected
console.log($("##{model.attributes.ChannelID} .select"))
$("##{model.attributes.ChannelID} .select")[0].click() # this event is never fired (selectChannel event)
return this
toggleTree: (e) =>
console.log "toggle tree"
selectChannel: (e) =>
console.log "selet channel"
正如你所看到的,当我点击它时,元素巫婆会触发一个toggleTree事件,而不是使用jquery点击方法,所以我会调用点击事件。
该元素的console.log:
[i.icon-check-empty select, prevObject: x.fn.x.init[1], context: document, selector: "#d972c967-6b56-40b5-99c9-a25300c03341 .select", jquery: "1.10.2", constructor: function…]
将元素的背景设置为黑色确实可行
$("##{model.attributes.ChannelID} .select").css
background:"#000"
任何人都可以阐明为什么会发生这种情况?
我认为元素没有被添加到DOM树中。 你的代码是:
$("#tree").append item.render()
你应该做到以下几点:
$("#tree").append item.render().el
而你出现虚假存在的原因是你使用它来检查它
model.attributes.selected
您的模型视图已呈现,但从未添加到DOM树。 我认为最好检查一下你的DOM树中是否存在一个组件,就是右键单击你的“Tree”并在Firefox或Chrome中使用“Inspect Element”功能。
链接地址: http://www.djcxy.com/p/63107.html上一篇: Backbone events not fired by a jquery click event inside the view