File tree Expand file tree Collapse file tree 2 files changed +42
-2
lines changed Expand file tree Collapse file tree 2 files changed +42
-2
lines changed Original file line number Diff line number Diff line change @@ -135,7 +135,12 @@ jQuery.extend({
135
135
return ;
136
136
}
137
137
138
- var internalKey = jQuery . expando , isNode = elem . nodeType ,
138
+ var thisCache ,
139
+
140
+ // Reference to internal data cache key
141
+ internalKey = jQuery . expando ,
142
+
143
+ isNode = elem . nodeType ,
139
144
140
145
// See jQuery.data for more information
141
146
cache = isNode ? jQuery . cache : elem ,
@@ -150,9 +155,16 @@ jQuery.extend({
150
155
}
151
156
152
157
if ( name ) {
153
- var thisCache = pvt ? cache [ id ] [ internalKey ] : cache [ id ] ;
158
+
159
+ thisCache = pvt ? cache [ id ] [ internalKey ] : cache [ id ] ;
154
160
155
161
if ( thisCache ) {
162
+
163
+ // Support interoperable removal of hyphenated or camelcased keys
164
+ if ( ! thisCache [ name ] ) {
165
+ name = jQuery . camelCase ( name ) ;
166
+ }
167
+
156
168
delete thisCache [ name ] ;
157
169
158
170
// If there is no data left in the cache, we want to continue
Original file line number Diff line number Diff line change @@ -551,3 +551,31 @@ test("jQuery.data supports interoperable hyphenated/camelCase get/set of propert
551
551
} ) ;
552
552
} ) ;
553
553
554
+ test ( "jQuery.data supports interoperable removal of hyphenated/camelCase properties" , function ( ) {
555
+ var div = jQuery ( "<div/>" , { id : "hyphened" } ) . appendTo ( "#qunit-fixture" ) ,
556
+ datas = {
557
+ "non-empty" : "a string" ,
558
+ "empty-string" : "" ,
559
+ "one-value" : 1 ,
560
+ "zero-value" : 0 ,
561
+ "an-array" : [ ] ,
562
+ "an-object" : { } ,
563
+ "bool-true" : true ,
564
+ "bool-false" : false ,
565
+ "some-json" : '{ "foo": "bar" }'
566
+ } ;
567
+
568
+ expect ( 27 ) ;
569
+
570
+ jQuery . each ( datas , function ( key , val ) {
571
+ div . data ( key , val ) ;
572
+
573
+ deepEqual ( div . data ( key ) , val , "get: " + key ) ;
574
+ deepEqual ( div . data ( jQuery . camelCase ( key ) ) , val , "get: " + jQuery . camelCase ( key ) ) ;
575
+
576
+ div . removeData ( key ) ;
577
+
578
+ equal ( div . data ( key ) , undefined , "get: " + key ) ;
579
+
580
+ } ) ;
581
+ } ) ;
You can’t perform that action at this time.
0 commit comments