jquery.event 研究学习之bind篇(续 一 )
下面是继续刚刚的学习研究。
这里整个是个大的参数处理器。
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处理最后的结果。我们是不是也可以对复杂问题进行内部处理然后再到主要函数呢?呵呵 ,我正慢慢的学习这样做自己的函数呢。。
-------无代码,生活不完美
开始 到结束 只是那么个过程。结束了 就忘记吧。