@@ -186,8 +186,8 @@ function JQLiteDealoc(element){
186
186
}
187
187
188
188
function JQLiteUnbind ( element , type , fn ) {
189
- var events = JQLiteData ( element , 'events' ) ,
190
- handle = JQLiteData ( element , 'handle' ) ;
189
+ var events = JQLiteExpandoStore ( element , 'events' ) ,
190
+ handle = JQLiteExpandoStore ( element , 'handle' ) ;
191
191
192
192
if ( ! handle ) return ; //no listeners registered
193
193
@@ -207,44 +207,56 @@ function JQLiteUnbind(element, type, fn) {
207
207
}
208
208
209
209
function JQLiteRemoveData ( element ) {
210
- var cacheId = element [ jqName ] ,
211
- cache = jqCache [ cacheId ] ;
210
+ var expandoId = element [ jqName ] ,
211
+ expandoStore = jqCache [ expandoId ] ;
212
212
213
- if ( cache ) {
214
- if ( cache . handle ) {
215
- cache . events . $destroy && cache . handle ( { } , '$destroy' ) ;
213
+ if ( expandoStore ) {
214
+ if ( expandoStore . handle ) {
215
+ expandoStore . events . $destroy && expandoStore . handle ( { } , '$destroy' ) ;
216
216
JQLiteUnbind ( element ) ;
217
217
}
218
- delete jqCache [ cacheId ] ;
218
+ delete jqCache [ expandoId ] ;
219
219
element [ jqName ] = undefined ; // ie does not allow deletion of attributes on elements.
220
220
}
221
221
}
222
222
223
- function JQLiteData ( element , key , value ) {
224
- var cacheId = element [ jqName ] ,
225
- cache = jqCache [ cacheId || - 1 ] ;
223
+ function JQLiteExpandoStore ( element , key , value ) {
224
+ var expandoId = element [ jqName ] ,
225
+ expandoStore = jqCache [ expandoId || - 1 ] ;
226
226
227
227
if ( isDefined ( value ) ) {
228
- if ( ! cache ) {
229
- element [ jqName ] = cacheId = jqNextId ( ) ;
230
- cache = jqCache [ cacheId ] = { } ;
228
+ if ( ! expandoStore ) {
229
+ element [ jqName ] = expandoId = jqNextId ( ) ;
230
+ expandoStore = jqCache [ expandoId ] = { } ;
231
231
}
232
- cache [ key ] = value ;
232
+ expandoStore [ key ] = value ;
233
+ } else {
234
+ return expandoStore && expandoStore [ key ] ;
235
+ }
236
+ }
237
+
238
+ function JQLiteData ( element , key , value ) {
239
+ var data = JQLiteExpandoStore ( element , 'data' ) ,
240
+ isSetter = isDefined ( value ) ,
241
+ keyDefined = ! isSetter && isDefined ( key ) ,
242
+ isSimpleGetter = keyDefined && ! isObject ( key ) ;
243
+
244
+ if ( ! data && ! isSimpleGetter ) {
245
+ JQLiteExpandoStore ( element , 'data' , data = { } ) ;
246
+ }
247
+
248
+ if ( isSetter ) {
249
+ data [ key ] = value ;
233
250
} else {
234
- if ( isDefined ( key ) ) {
235
- if ( isObject ( key ) ) {
236
- if ( ! cacheId ) element [ jqName ] = cacheId = jqNextId ( ) ;
237
- jqCache [ cacheId ] = cache = ( jqCache [ cacheId ] || { } ) ;
238
- extend ( cache , key ) ;
251
+ if ( keyDefined ) {
252
+ if ( isSimpleGetter ) {
253
+ // don't create data in this case.
254
+ return data && data [ key ] ;
239
255
} else {
240
- return cache ? cache [ key ] : undefined ;
256
+ extend ( data , key ) ;
241
257
}
242
258
} else {
243
- if ( ! cacheId ) element [ jqName ] = cacheId = jqNextId ( ) ;
244
-
245
- return cache
246
- ? cache
247
- : cache = jqCache [ cacheId ] = { } ;
259
+ return data ;
248
260
}
249
261
}
250
262
}
@@ -583,11 +595,11 @@ forEach({
583
595
dealoc : JQLiteDealoc ,
584
596
585
597
bind : function bindFn ( element , type , fn ) {
586
- var events = JQLiteData ( element , 'events' ) ,
587
- handle = JQLiteData ( element , 'handle' ) ;
598
+ var events = JQLiteExpandoStore ( element , 'events' ) ,
599
+ handle = JQLiteExpandoStore ( element , 'handle' ) ;
588
600
589
- if ( ! events ) JQLiteData ( element , 'events' , events = { } ) ;
590
- if ( ! handle ) JQLiteData ( element , 'handle' , handle = createEventHandler ( element , events ) ) ;
601
+ if ( ! events ) JQLiteExpandoStore ( element , 'events' , events = { } ) ;
602
+ if ( ! handle ) JQLiteExpandoStore ( element , 'handle' , handle = createEventHandler ( element , events ) ) ;
591
603
592
604
forEach ( type . split ( ' ' ) , function ( type ) {
593
605
var eventFns = events [ type ] ;
0 commit comments