Backbone.js:无法绑定事件

时间:2012-05-18 18:27:18

标签: javascript html backbone.js

我几乎尝试过所有内容,甚至完全复制了这个例子:[在这里] [1]

然而,我无法看到它的工作原理。我已经尝试了多次事件绑定的替换,但它们似乎都没有用。可能的原因是什么?

Div容器;

        加载                       

我的事件约束试验;

el: '#container',
        events: {
            "click button": "render"
        }

也;

el: '#container',
    events: {
        "click button#add": "render"
    }

最后这个;

el: '#container',
events: {
            "click input[type=button]": "doSearch"  
        }

我是否有可能做错了。除此之外,如果我让它工作,是否可以为div中的每个函数分配click事件,给出他们的id而不是更通用的“click button”:“render”

注意:我无法获取包含在代码标记中的html代码。

2 个答案:

答案 0 :(得分:2)

您的输入按钮是容器的子元素吗? Backbone不会在视图元素的范围之外找到元素。

如果#add是#container的子元素,你可以“点击#add”。

答案 1 :(得分:1)

首先,我假设您的代码来自Backbone视图,对吗?

DOM中是否存在#container div?我注意到你的例子是在点击时调用渲染,但通常渲染是人们放置代码来实际渲染HTML模板的地方。

BackboneJS上的delegateEvents文档使用以下渲染调用作为示例:

 render: function() {
    $(this.el).html(this.template(this.model.toJSON()));
    return this;
  },

请注意,在此触发之前,该示例在技术上没有任何内容供您点击。

测试它的一种快速方法是在应用程序启动后在控制台中运行它:

$("#container")

如果这返回一个空的“[]”,那么你知道你有问题。要考虑的第二件事是它是否实际上是可点击的(因为它可能存在,但由于其位置或大小而无法点击)。

因此,最后的测试是在控制台中运行它并尝试单击div:

$("#container").click(function() { alert('clicked');});