下面是继续刚刚的学习研究。
这里整个是个大的参数处理器。
1 /* 2 * one 不多说了。这里直接传个1过去。。上面分析过了。 3 * 4 */ 5 one = function( types, selector, data, fn ) { 6 return this.on.call( this, types, selector, data, fn, 1 ); 7 }; 8 /* 9 * 解除绑定。和绑定很类似了。。 10 * 11 */ 12 off= function( types, selector, fn ) { 13 //如果types本身就是个事件这个部分必须配合绑定来分析。所以我先预览下。。 14 if ( types && types.preventDefault && types.handleObj ) { 15 //这里是它设置的一个以及默认的参数测试 确认。 16 // ( event ) dispatched jQuery.Event |-->通过jquery分发的方法。 17 var handleObj = types.handleObj; 18 //获取标志|class jquery提供了这样的方式绑定 19 jQuery( types.delegateTarget ).off( 20 //这是那个事件对应的对象 21 handleObj.namespace? handleObj.type + "." + handleObj.namespace : handleObj.type, 22 //这就是绑定的那个事件的class 了。。 23 //注意这里的构造。可以没这个class这class可是唯一的 24 // 和CSS 是不一样的。可以理解为设置了ID或者是标示 25 handleObj.selector, 26 handleObj.handler 27 ); 28 return this; 29 } 30 if ( typeof types === "object" ) { 31 //和绑定的时候似的,一次解除多个。 32 // ( types-object [, selector] ) 33 for ( var type in types ) { 34 //直接遍历 解除。 35 this.off( type, selector, types[ type ] ); 36 } 37 return this; 38 } 39 if ( selector === false || typeof selector === "function" ) { 40 //根本不是live形态的绑定。那么就把这个 从新整理参数。这里和前面的ON类似了。 41 // ( types [, fn] ) 42 fn = selector; 43 selector = undefined; 44 } 45 if ( fn === false ) { //依旧是触发false; 46 fn = returnFalse;//源代码是 returnFalse = function(){return false}; 47 } 48 return this.each(function() { 49 //最后把这些放到真正的解除函数 -->remove里。 50 jQuery.event.remove( this, types, fn, selector ); 51 }); 52 };
整个就象上次说的一样。传到了。add reomve处理最后的结果。我们是不是也可以对复杂问题进行内部处理然后再到主要函数呢?呵呵 ,我正慢慢的学习这样做自己的函数呢。。
-------无代码,生活不完美