Element.on()向监听函数中传入的参数
Element.on()是Element.addListener()的缩写形式,按照Ext官方API的说明,使用形式如:Element.addListener( String eventName, Function fn, [Object scope], [Object options] ) ,无返回值。今天我要记录的是关于其中的第二个参数,Function fn,根据API说明,这个函数在注册事件发生时被调用,同时会传入三个参数:evt(当前事件对象)、t(事件目标的Elements对象)和o(一些配置信息),你可以不传入参数、传入第一个参数、前两个参数或前三个参数。若是不传入参数,那么在函数体内部通过使用this将得到注册事件的对象本身(Element对象),假设页面存在一个div :<div id=”aDiv”>i am aDiv</div>如:
el.on(‘click’,function(){
Ext.Msg.alert(‘info’,'this.id==’ + this.id);
Ext.Msg.alert(‘info’,'this.dom.innerHTML==’ + this.dom.innerHTML);
});
若是传入一个参数,那么这个参数将被函数当做当前事件对象(EventObject)使用。
若是传入两个参数呢,按照API说明,第二个参数就是当前对象,即注册此事件的对象,并且它是一个Element型的,而根据我的测试,它并非是一个Elements型,而仅仅是一个普通的HTML元素,或者说是Ext里的HTMLElement对象,同样上面的函数改写:
el.on(‘click’,function(evt,t){
Ext.Msg.alert(‘info’,'t.dom.innerHTML==’ + t.dom.innerHTML);
});
若 t 是Element对象,第三行应能正确运行,然而不能,只有改成Ext.Msg.alert(‘info’,'t.dom.innerHTML==’ + t.innerHTML)才能得到预期的值。这说明t是一个HTMLElement对象。