骨干事件没有被视图内的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

下一篇: Backbone events being fired without trigger