diff options
author | rwldrn <waldron.rick@gmail.com> | 2011-09-07 10:13:22 -0400 |
---|---|---|
committer | Dave Methvin <dave.methvin@gmail.com> | 2011-09-07 10:13:22 -0400 |
commit | 8e8fa6dc1ad514b0fa20e41faddcb85693d0408a (patch) | |
tree | 16e5c5577939b0fd30123b539182ff3f7594ce9f | |
parent | 4bc691a1c3a67aefb867e868d5577155571fb659 (diff) | |
download | jquery-8e8fa6dc1ad514b0fa20e41faddcb85693d0408a.tar.gz jquery-8e8fa6dc1ad514b0fa20e41faddcb85693d0408a.zip |
Bug in rmultidash. Fixes #10194
-rw-r--r-- | src/data.js | 5 | ||||
-rw-r--r-- | test/unit/data.js | 23 |
2 files changed, 16 insertions, 12 deletions
diff --git a/src/data.js b/src/data.js index 4914971ea..d1d2d0032 100644 --- a/src/data.js +++ b/src/data.js @@ -1,7 +1,7 @@ (function( jQuery ) { var rbrace = /^(?:\{.*\}|\[.*\])$/, - rmultiDash = /([a-z])([A-Z])/g; + rmultiDash = /([A-Z])/g; jQuery.extend({ cache: {}, @@ -316,7 +316,8 @@ function dataAttr( elem, key, data ) { // If nothing was found internally, try to fetch any // data from the HTML5 data-* attribute if ( data === undefined && elem.nodeType === 1 ) { - var name = "data-" + key.replace( rmultiDash, "$1-$2" ).toLowerCase(); + + var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase(); data = elem.getAttribute( name ); diff --git a/test/unit/data.js b/test/unit/data.js index 06c6c2d57..b1bf232a4 100644 --- a/test/unit/data.js +++ b/test/unit/data.js @@ -488,23 +488,26 @@ if (window.JSON && window.JSON.stringify) { } test("jQuery.data should follow html5 specification regarding camel casing", function() { - expect(8); + expect(10); - var div = jQuery("<div id='myObject' data-foo='a' data-foo-bar='b' data-foo-bar-baz='c'></div>") + var div = jQuery("<div id='myObject' data-w-t-f='ftw' data-big-a-little-a='bouncing-b' data-foo='a' data-foo-bar='b' data-foo-bar-baz='c'></div>") .prependTo("body"); - equals(div.data().foo, "a", "Verify single word data-* key"); - equals(div.data().fooBar, "b", "Verify multiple word data-* key"); - equals(div.data().fooBarBaz, "c", "Verify multiple word data-* key"); + equal( div.data().wTF, "ftw", "Verify single letter data-* key" ); + equal( div.data().bigALittleA, "bouncing-b", "Verify single letter mixed data-* key" ); - equals(div.data("foo"), "a", "Verify single word data-* key"); - equals(div.data("fooBar"), "b", "Verify multiple word data-* key"); - equals(div.data("fooBarBaz"), "c", "Verify multiple word data-* key"); + equal( div.data().foo, "a", "Verify single word data-* key" ); + equal( div.data().fooBar, "b", "Verify multiple word data-* key" ); + equal( div.data().fooBarBaz, "c", "Verify multiple word data-* key" ); + + equal( div.data("foo"), "a", "Verify single word data-* key" ); + equal( div.data("fooBar"), "b", "Verify multiple word data-* key" ); + equal( 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"); + equal( div.data("fooBar"), "d", "Verify updated data-* key" ); + equal( div.data("foo-bar"), "d", "Verify updated data-* key" ); div.remove(); }); |