我几乎尝试过所有内容,甚至完全复制了这个例子:[在这里] [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代码。
答案 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');});