2011-11-20 47 views
1

我有一個小骨架類:如何綁定骨幹元素?

view = Backbone.View.extend({ 
    events: { 
     "click textarea" : "doSomething" 
    }, 
    doSomething : function() { 
     var textarea = $(this.el).find('textarea') 
     // I would like to just call, this.textarea, or this.elements.textarea 
    } 
}); 

我非常希望能夠通過一個變量來訪問,而不必每次搜索的元素我的textarea。任何人有任何想法如何做到這一點?

回答

0

傳遞事件作爲參數,然後使用事件目標

view = Backbone.View.extend({ 

    events: { 
     "click textarea" : "doSomething" 
    }, 
    doSomething : function(event) { 
     var textarea = $(event.target); 

    } 

}); 
+0

但如果我想訪問我的Textarea從不同的事件觸發不同的功能?明白我的意思了嗎? – kidcapital

+0

我將添加此作爲另一個答案,因爲它不像我期望的那樣格式化 – afj176

1

也許我在想,但如何回合給textarea的一類或ID並在需要時專門針對,

或創建生成textarea的

var View = Backbone.View.extend({ 
    el: '#main', 
    initialize: function(){ 
     this.render(); 
    }, 
    render: function() { 
     var subview = new SubView(); 
     this.$('form').append(subview.el); 
     this.$('form').show(); 
    }, 
}); 

var SubView = Backbone.View.extend({ 
    tagName: 'textarea', 
    id: 'whateverId', 
    events: { 
     "click" : "doSomething" 
    }, 
    initialize: function(){ 
     this.render(); 
    }, 
    doSomething : function(event) { 
     var textarea = $(event.target); 
     // or var textarea = $(this.el); 
    }, 
    render: function(){ 
     return $(this.el); 
    } 
}); 
1

其他的答案給你,你需要參考一個子畫面,但如果你真的需要一個句柄textarea的,然後你可以做這樣的事情:

view = Backbone.View.extend({ 
    initialize: function() { 
    this.myTextareaElement = $(this.el).find('textarea') 
    } 
    events: { 
    "click textarea" : "doSomething" 
    }, 
    doSomething : function() { 
    // use this.myTextareaElement ... 
    } 
}); 
+0

如果要在渲染函數中添加文本區域或將已呈現的DOM元素作爲el傳遞到視圖中,這可能會或可能不會起作用。 – poezn