2016-02-04 156 views
0

你好我試圖觸發視圖事件後視圖裏面的一些DOM修改初始化函數骨幹,觸發查看事件

編輯:對不起,我的問題,目前還不清楚。這裏是完整的代碼示例。最後,我發現我在添加課程之前觸發了變化事件......感覺如此愚蠢,但我掙扎了好幾個小時! 感謝您的支持!

<script src="https://code.jquery.com/jquery-1.12.0.js"></script> 
    <script src="http://underscorejs.org/underscore.js"></script> 
    <script src="http://backbonejs.org/backbone.js"></script> 
    <script type="text/javascript"> 
    var App = {}; 

    (function($) { 

     App.FormView = Backbone.View.extend({ 
       events: { 
        "change .autofill" : "autofill" 
       }, 

       initialize : function() { 
        _.bindAll(this, "autofill"); 

        this.formelements = {"input" : {"autofill" : true}}; 

        for(var elementId in this.formelements){ 
         if(this.formelements[elementId].autofill){ 
          var $el = $("#"+elementId); 
          //$el.trigger("change").addClass("autofill")//does not work trigger before class added :-(
          $el.addClass("autofill").trigger("change"); 
         } 
        } 
       }, 

       autofill : function(e){ 
        console.log("ok"); 
       } 
     });  

     App.init = function(containerId){ 
      new App.FormView({el : "#"+containerId}); 
     } 
    })(jQuery); 
    </script> 


    <div id="container"> 
     <input type="checkbox" id="input" /> 
    </div> 
    <script type="text/javascript"> 
     App.init("container"); 
    </script> 
+0

歡迎來到StackOverfow。什麼是問題?如果你有任何錯誤,請粘貼錯誤。你不能只是添加源代碼,並相信有人會明白你的意思 – Aminadav

+0

你究竟是什麼意思的*「不起作用」* ..?什麼是'elementId' ..?我們需要查看DOM結構以確保存在這樣的元素。請分享一個[mcve] –

回答

1

您試圖觸發尚未在DOM中的元素上的事件。這是行不通的,你必須在視圖渲染後觸發你的事件。

我不知道究竟你是如何渲染,但考慮this

var View = Backbone.View.extend({ 

    events: { 
    'change input': 'autofill' 
    }, 

    render: function() { 
    this.$el.html('<input>'); 
    this.$('input').trigger('change'); 
    }, 

    autofill: function(e) { 
    console.log('ohai thar'); 
    } 

}); 

var view = new View({ 
    el: $('#root') 
}); 
view.render(); 

當觸發被添加到它就會拿起文檔元素上的事件。

+0

爲什麼你認爲元素還沒有在DOM ..? –

+0

@TJ由於OP說它不起作用,我看不到任何其他原因爲什麼它不應該比'$(「#」+ elementId)'返回一個空集合。 – ivarni

+1

然後,你應該要求更多的代碼,以確保是這種情況。這只是一個假設......您不能使用OP提供的信息來創建類似*的語句「您試圖使用尚未在DOM中的元素觸發事件」*。你應該投票結束這個問題 –