Events 在js mootools的事件处理程序中访问类属性
我有一个JS对象(使用mootools),它存储了一些DOM元素,并将它们附加到事件侦听器:Events 在js mootools的事件处理程序中访问类属性,events,properties,static,mootools,handler,Events,Properties,Static,Mootools,Handler,我有一个JS对象(使用mootools),它存储了一些DOM元素,并将它们附加到事件侦听器: window.myObject = { init: function(el1ID, el2ID){ this.myElement1 = document.getElement(el1ID); this.myElement2 = document.getElement(el2ID); this.myElement1.addEvents({
window.myObject = {
init: function(el1ID, el2ID){
this.myElement1 = document.getElement(el1ID);
this.myElement2 = document.getElement(el2ID);
this.myElement1.addEvents({
'click' : function(){
myObject.myElement2.innerHTML("foo");
}
});
}
}
现在,只有当页面中只有一个对象myObject
时,这才有效。我必须为另一个结构创建另一个对象el1ID
-el2ID
,我希望将此对象作为一个类,并为每个结构实例化一个对象,以便使每个事件处理独立于其他结构。我的问题是:如何在事件处理程序中访问myObject
对象的属性
'click' : function(){
myElement2.innerHTML("foo")
}
不起作用,而且
'click' : function(){
this.myElement2.innerHTML("foo")
}
将搜索
myElement2
,作为myElement1
(又称事件引发者)的属性。除了静态访问对象的属性,我可以做什么?单击事件回调以元素为中心,并将以元素作为执行上下文触发,即this===myObject.myElement1:
this.myElement1.addEvents({
'click' : function(){
myObject.myElement2.innerHTML("foo");
}
});
MooTools中没有Element.prototype.innerHTML()
方法,顺便说一句,它是Element.prototype.set
,用作el.set('html',someString)代码>。在1.1x中曾经是.setHTML()
为了能够访问对象,您有几种模式
this.myElement1.addEvents({
'click' : function(e){
this.set('html', 'foo');
}
});
要访问父对象,可以改为在变量中重新绑定或保存引用:
this.myElement1.addEvents({
'click' : function(e){
// this === myObject
this.myElement2.set('html', 'foo');
// getting to original
e.target === this.myElement1; // from event object, like currentTarget
}.bind(this) // <-- binding to outer object instead
});
就这样
init: function(){
var self = this;
...
this.myElement1.addEvents({
'click' : function(e){
// self is orig. this === self.myElement1;
self.myElement2.set('html', 'foo');
}
});
}