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("
") + var div = jQuery("
") .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(); });