我正在将jQuery代码重写为Backbone,但我陷入了一个看似微不足道的问题:
在一个元素的回调中,该元素是主View元素的子元素,如何访问被单击的特定子元素(例如)?
var Composer = Backbone.View.extend({
events: {
"click #postnow": "postnow"
},
postnow: function(){
// @fixme:
var btn = $("#postnow");
// Do something
}
});
new Composer({el: $('.composer')});
在jQuery中,我会使用$(this)
,但在Backbone中它引用的是View元素,而不是被点击的子元素。
如果没有明确指定选择器,有没有办法做到这一点?
答案 0 :(得分:5)
在视图回调中,您可以访问jQuery事件及其属性,更具体地说是event.currentTarget
尝试
var Composer = Backbone.View.extend({
events: {
"click #postnow": "postnow"
},
postnow: function(e){
var btn = $(e.currentTarget);
}
});
答案 1 :(得分:0)
隐式参数被发送到函数回调这个参数是jQuery Event Object,它包含很多信息,包括事件所针对的DOM元素:
var Composer = Backbone.View.extend({
events: {
"click #postnow": "postnow"
},
postnow: function( event ){
console.log( "postnow()" );
console.log( "this", this );
console.log( "event", event );
console.log( "target", event.target );
console.log( "data-value", $(event.target).attr( "data-value" ) );
}
});