我们已经研究并尝试了所有我们能找到但却无法理解为什么按钮点击甚至没有触发。如果我们更改视图渲染html颜色它会显示更改,因此视图渲染工作正常但是当单击登录按钮时 - >没有。 js控制台中没有显示错误。试过
button#login_button
和#login_button
以及login_button
- 一切都没有。我们缺少什么?请求任何帮助
SessionView = Backbone.View.extend({
el: ('#session'),
initialize:function () {
this.render();
},
render:function () {
if (!session) {
$(this.el).html(
"<button id=\"login_button\" class=\"login_button black\">"+
"Login"+
"</button>");
return this;
} else {
$(this.el).html(
"<button id=\"logout_button\" class=\"login_button black\">"+
"Logout</button>");
return this;
}
},
events: {
"click login_button" : "login",
"click logout_button": "logout"
},
login: function(){
alert("login");
console.log("login dialog");
//var loginView = new LoginView();
//loginView.render().showModal();
},
logout: function(){
alert("You Have Logged Out");
}
});
答案 0 :(得分:2)
你应该在选择器中保留'#':
events: {
"click #login_button" : "login",
"click #logout_button": "logout"
}
<强>更新强>
您是否等待DOM准备好在此Backbone视图类上使用new
?
您的按钮被html
调用更改的事实意味着您这样做。
一旦检查完毕,就必须使用this.$el
代替$(this.el)
。
如果仍然无效,请搜索事件阻止并确保ID是唯一的。
这个非常简单的JSFiddle与您告诉我们的条件相同。