0

我几乎尝试了一切,甚至完全复制了这个例子:[在这里][1]

但是我看不到它的工作原理。我已经为事件绑定尝试了多种替代方法,但它们似乎都不起作用。可能的原因是什么?

分区容器;

加载

我的事件绑定试验;

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

还;

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

最后是这个;

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

有没有可能我做错了。此外,如果我让它工作,是否可以为 div 中的每个函数分配点击事件,给出它们的 id 而不是更通用的“点击按钮”:“渲染”

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

4

2 回答 2

2

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

如果#add 是#container 的子元素,您可以执行“单击#add”。

于 2012-05-18T19:40:34.923 回答
1

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

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

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

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

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

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

$("#container")

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

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

$("#container").click(function() { alert('clicked');});
于 2012-05-18T19:40:06.180 回答