aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohn Resig <jeresig@gmail.com>2011-05-10 11:56:42 -0400
committerJohn Resig <jeresig@gmail.com>2011-05-10 11:56:42 -0400
commita5e407cafb9d398b5bf2f209ad0e8a42691bf391 (patch)
tree84ae0db76ba289044c0e103d23edc75f511bb3e3
parent419b5e5e2a0d376e71c3f37bf9a3d96f3b4a67f2 (diff)
downloadjquery-a5e407cafb9d398b5bf2f209ad0e8a42691bf391.tar.gz
jquery-a5e407cafb9d398b5bf2f209ad0e8a42691bf391.zip
Make sure that data properties with hyphens are always accessed/set using camelCase. Fixes #9124.
-rw-r--r--src/data.js4
-rw-r--r--test/unit/data.js9
2 files changed, 9 insertions, 4 deletions
diff --git a/src/data.js b/src/data.js
index 9e5d1ab0b..c019a64e2 100644
--- a/src/data.js
+++ b/src/data.js
@@ -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 */ ) {
diff --git a/test/unit/data.js b/test/unit/data.js
index 8b5ce9612..1af2077ec 100644
--- a/test/unit/data.js
+++ b/test/unit/data.js
@@ -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
+});