深入详解EXT2.3事件增加及删除源码

先看addListener也就是Ext里面的on方法

 

/*
* 注册事件函数,返回是否注册成功
* el : String/HTMLElement  一个html元素或其id,事件处理器将会被指定到其上 
* eventName : String  需要监听的事件类型 
* handler : Function 事件调用的处理函数。此函数将会被传递以下参数: 
* *****evt : EventObject   EventObject ,描述了事件。
*****t : Element    Element ,它是事件的目标(target)。
                 注意:此项可能被用delegate选项过滤。 
* 	****o : Object 来自调用addListener时的选项对象。 
* * 例子:
* el.addListener('click', this.onClick, this, 
*        {    single: true,    delay: 100, stopEvent : true,    forumId: 4})
*/
addListener : function( el , eventName , fn ) {
/* *********************************************************
getDom : function( el ) {
	if ( !el || !document ) {
		return null;
	}
	return el.dom ? el.dom : 
                   ( typeof el == 'string' ? document.getElementById( el ) : el );
}
********************************************************* */
el = Ext.getDom( el );
			
// 参数检查
if ( !el || !fn ) {
	return false;
}
			
// 如果是unload事件,那么直接添加在unloadListeners数组中,
//当window的onunload事件触发时执行
if ( "unload" == eventName ) {
	unloadListeners[unloadListeners.length] = [
				 el , eventName , fn
	];
	return true;
}
			
// 封装函数,处理event变量不兼容的问题
/* 	getEvent : function( e ) {
		var ev = e || window.event;
		if ( !ev ) {
			var c = this.getEvent.caller;
			while ( c ) {
				ev = c.arguments[0];
				if ( ev && Event == ev.constructor ) {break;}
				c = c.caller;
			}
		}
		return ev;
	} */
			var wrappedFn = function( e ) {
				return typeof Ext != 'undefined'
				    ? fn( Ext.lib.Event.getEvent( e ) )
				    : false;
			};
			var li = [ el , eventName , fn , wrappedFn ];
			var index = listeners.length;
			listeners[index] = li;
			// 下面语句就直接注册事件了
			this.doAdd( el , eventName , wrappedFn , false );
			return true;
		}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值