2012-10-02 40 views
-1

这绝对让我发疯!有人可以解释为什么这个代码不工作,以及如何解决它?它应该将消息“点击”发送到控制台,但它不起作用。控制台消息可以在其他地方使用,但由于某种原因,javascript不捕获click事件。

var resultsListView = new ResultsListView({model: comparablesList}); 

ResultsListView = Backbone.View.extend({ 
     tagName:'div', 
     id:'resultView', 
     template:_.template("<div class='resultsListItemView'></div>"), 

     initialize:function() { 
      $(this.el).html('<p class="loadingText">Getting comparables...<p>'); 
      this.model.bind("change", this.render, this); 
      this.model.bind("reset", this.loading, this); 
     }, 

     render:function (eventName) { 
      $(this.el).html(this.template()); 

      _.each(this.model.models, function (comparable) { 
       this.$('.resultsListItemView').append(new ResultsListItemView({model:comparable}).el); 
      }, this); 

      $('#info').html($(this.el)); 

      return this; 
     } 
    }); 

    ResultsListItemView = Backbone.View.extend({ 
      initialize: function(){ 
       this.render(); 
      }, 

      template:_.template("<div class='hovr_item'> \ 
            <div class='hovr'> \ 
             <button class='test123'>test</button> \ 
            </div> \ 
           </div> "), 

      render: function(){ 
       var resultsListItemView = this; 
       $(this.el).html(this.template(this.model.toJSON())); 

       $(this.el).find('.test123').click(function() { 
        console.log('click'); // this does not work after clicking 
       }); 
       return this; 
      } 
     }); 

作为一个额外的线索,如果我把这个代码放到使其不显示在控制台...所以它似乎是唯一的单击事件:

$(this.el).find('.test123').each(function(index) { 
     console.log('found'); 
    }); 
+1

它应该没有记录,你首先必须点击按钮。你能告诉我们什么部分的代码不起作用吗? – Bergi

+0

点击按钮后,它不记录任何东西 - 我做了一些编辑,使代码更具可读性 – Rob

+0

你如何实例化该视图,以及如何将它的'el'添加到DOM? –

回答

1

你试过结合这个事件与事件属性?即:

events: "click .test123": "affiliateClick" 
+0

试过,但不工作: 事件:{ “点击.test123”: “testClicked” }, testClicked:功能(E){ 的console.log( '点击'); }, – Rob

+0

页面上是否有其他脚本错误?另外,请尝试删除模板末尾的尾部逗号等。 –

+0

如何判断脚本是否有错误?它似乎都运行正常。另外,你的意思是哪个逗号? (对不起,我是一个jscript新手) – Rob