]> source.dussan.org Git - jquery.git/commitdiff
Make sure that data properties with hyphens are always accessed/set using camelCase...
authorJohn Resig <jeresig@gmail.com>
Tue, 10 May 2011 15:56:42 +0000 (11:56 -0400)
committerJohn Resig <jeresig@gmail.com>
Tue, 10 May 2011 15:56:42 +0000 (11:56 -0400)
src/data.js
test/unit/data.js

index 9e5d1ab0b970d801ebb9e12d8a605d6a5ccc8c77..c019a64e2d681de0ab1ca6d2d0e78fe65a414302 100644 (file)
@@ -98,7 +98,7 @@ jQuery.extend({
                }
 
                if ( data !== undefined ) {
-                       thisCache[ name ] = data;
+                       thisCache[ jQuery.camelCase( name ) ] = data;
                }
 
                // TODO: This is a hack for 1.5 ONLY. It will be removed in 1.6. Users should
@@ -108,7 +108,7 @@ jQuery.extend({
                        return thisCache[ internalKey ] && thisCache[ internalKey ].events;
                }
 
-               return getByName ? thisCache[ name ] : thisCache;
+               return getByName ? thisCache[ jQuery.camelCase( name ) ] : thisCache;
        },
 
        removeData: function( elem, name, pvt /* Internal Use Only */ ) {
index 8b5ce961224cde15adf15461353ad3deff0d2def..1af2077ec48ed1ca68f9d85fab3674719021801d 100644 (file)
@@ -488,7 +488,7 @@ if (window.JSON && window.JSON.stringify) {
 }
 
 test("jQuery.data should follow html5 specification regarding camel casing", function() {
-       expect(6);
+       expect(8);
 
        var div = jQuery("<div id='myObject' data-foo='a' data-foo-bar='b' data-foo-bar-baz='c'></div>")
                .prependTo("body");
@@ -501,5 +501,10 @@ test("jQuery.data should follow html5 specification regarding camel casing", fun
        equals(div.data("fooBar"), "b", "Verify multiple word data-* key");
        equals(div.data("fooBarBaz"), "c", "Verify multiple word data-* key");
 
+       div.data("foo-bar", "d");
+
+       equals(div.data("fooBar"), "d", "Verify updated data-* key");
+       equals(div.data("foo-bar"), "d", "Verify updated data-* key");
+
        div.remove();
-});
\ No newline at end of file
+});