@@ -52,38 +52,44 @@ var undef,
52
52
* @returns {EventManager } this
53
53
*/
54
54
on : function ( e , data , fn , _fnCtx , _isOnce ) {
55
- var params = this . _params ,
56
- event = this . _eventBuilder ( e , params , 'on' ) ;
57
-
58
55
if ( functions . isFunction ( data ) ) {
59
56
_isOnce = _fnCtx ;
60
57
_fnCtx = fn ;
61
58
fn = data ;
62
59
data = undef ;
63
60
}
64
61
65
- var fnStorage = this . _storage [ event ] || ( this . _storage [ event ] = { } ) ,
66
- fnId = identify ( fn , _fnCtx ) ;
67
-
68
- if ( ! fnStorage [ fnId ] ) {
69
- var bindDomNodes = params . bindDomNodes ,
70
- bindClassName = params . bindClassName ,
71
- _this = this ,
72
- handler = fnStorage [ fnId ] = this . _handlerWrapper (
73
- _isOnce ?
74
- function ( ) {
75
- _this . un ( e , fn , _fnCtx ) ;
76
- fn . apply ( this , arguments ) ;
77
- } :
78
- fn ,
79
- data ,
80
- _fnCtx ,
81
- fnId ) ;
62
+ var _this = this ,
63
+ params = this . _params ,
64
+ bindDomNodes = params . bindDomNodes ,
65
+ bindClassName = params . bindClassName ,
66
+ fnId = identify ( fn , _fnCtx ) ,
67
+ onEvent = function ( eventName ) {
68
+ var event = this . _eventBuilder ( eventName , params , 'on' ) ,
69
+ fnStorage = this . _storage [ event ] || ( this . _storage [ event ] = { } ) ;
70
+
71
+ if ( ! fnStorage [ fnId ] ) {
72
+ fnStorage [ fnId ] = handler ? handler : handler = this . _handlerWrapper (
73
+ _isOnce ?
74
+ function ( ) {
75
+ _this . un ( e , fn , _fnCtx ) ;
76
+ fn . apply ( this , arguments ) ;
77
+ } :
78
+ fn ,
79
+ data ,
80
+ _fnCtx ,
81
+ fnId ) ;
82
+
83
+ bindDomNodes . forEach ( function ( domNode ) {
84
+ domNode . addEventListener ( event , handler , false ) ;
85
+ } ) ;
86
+ }
87
+ } . bind ( this ) ,
88
+ handler ;
82
89
83
- bindDomNodes . forEach ( function ( domNode ) {
84
- domNode . addEventListener ( event , handler , false ) ;
85
- } ) ;
86
- }
90
+ typeof e === 'string' ?
91
+ e . split ( ' ' ) . forEach ( onEvent , this ) :
92
+ onEvent ( e ) ;
87
93
88
94
return this ;
89
95
} ,
@@ -115,26 +121,32 @@ var undef,
115
121
var argsLen = arguments . length ;
116
122
if ( argsLen ) {
117
123
var params = this . _params ,
118
- event = this . _eventBuilder ( e , params , 'un' ) ;
124
+ fnId = identify ( fn , _fnCtx ) ,
125
+ bindDomNodes = params . bindDomNodes ,
126
+ bindClassName = params . bindClassName ,
127
+ onEvent = function ( eventName ) {
128
+ var event = this . _eventBuilder ( eventName , params , 'un' ) ;
119
129
120
- if ( argsLen === 1 ) {
121
- this . _unbindByEvent ( this . _storage [ event ] , event ) ;
122
- } else {
123
- var wrappedFn ,
124
- fnId = identify ( fn , _fnCtx ) ,
125
- fnStorage = this . _storage [ event ] ,
126
- bindDomNodes = params . bindDomNodes ,
127
- bindClassName = params . bindClassName ;
130
+ if ( argsLen === 1 ) {
131
+ this . _unbindByEvent ( this . _storage [ event ] , event ) ;
132
+ } else {
133
+ var wrappedFn ,
134
+ fnStorage = this . _storage [ event ] ;
128
135
129
- if ( wrappedFn = fnStorage && fnStorage [ fnId ] )
130
- delete fnStorage [ fnId ] ;
136
+ if ( wrappedFn = fnStorage && fnStorage [ fnId ] )
137
+ delete fnStorage [ fnId ] ;
131
138
132
- var handler = wrappedFn || fn ;
139
+ var handler = wrappedFn || fn ;
133
140
134
- bindDomNodes . forEach ( function ( domNode ) {
135
- domNode . removeEventListener ( event , handler ) ;
136
- } ) ;
137
- }
141
+ bindDomNodes . forEach ( function ( domNode ) {
142
+ domNode . removeEventListener ( event , handler ) ;
143
+ } ) ;
144
+ }
145
+ } . bind ( this ) ;
146
+
147
+ typeof e === 'string' ?
148
+ e . split ( ' ' ) . forEach ( onEvent ) :
149
+ onEvent ( e ) ;
138
150
} else {
139
151
objects . each ( this . _storage , this . _unbindByEvent , this ) ;
140
152
}
0 commit comments