2013-04-20 106 views
0

我们已经研究并尝试了所有可以找到的内容,但无法看到为什么按钮点击甚至没有发射。如果我们更改视图呈现html颜色,它会显示更改,所以视图呈现工作正常,但是当单击登录按钮时 - >无。没有错误显示在js控制台中。试用backbone.js <button>点击不发射

button#login_button#login_buttonlogin_button - 什么都没有。我们缺少什么? THKS任何帮助

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

虽然你说过你用'#login_button'试过,但我有点同意lib3d,它应该可以工作。还有什么可能是错误的:1)你指定的'el'不存在(我想不是这种情况)2)某些监听器返回false或停止传播,因此你的回调函数没有被调用。另外,'this。$ el' ='$(this.el)'。 – Loamhoof 2013-04-20 17:42:00

+0

页面上是否有其他元素具有相同的ID?尝试将事件绑定到类并查看会发生什么。 – 2013-04-20 18:17:38

回答

2

你应该保持 '#' 中选择:

events: { 
     "click #login_button" : "login", 
     "click #logout_button": "logout" 
    } 

UPDATE

你等待DOM准备使用这个骨干视图类new? 你的按钮被html调用改变的事实意味着你这样做。

只要你检查了,你必须使用this.$el而不是$(this.el)

如果仍然不起作用,请搜索事件拦截并确保ID唯一。

这个非常简单的JSFiddle与您告诉我们的条件相同。

+0

“*尝试使用'#login_button' [...]什么都没有。*” – Loamhoof 2013-04-20 17:36:51