From 8c318bf41412d493604beed1879c4a273ff05a57 Mon Sep 17 00:00:00 2001 From: Alexis Abril Date: Sun, 10 Apr 2011 15:17:00 -0400 Subject: Fixes #7328. When getting data- attributes, after-cap any embedded dashes per the W3C HTML5 spec. --- src/data.js | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'src/data.js') diff --git a/src/data.js b/src/data.js index 2d53a7104..c2fd558f0 100644 --- a/src/data.js +++ b/src/data.js @@ -1,6 +1,7 @@ (function( jQuery ) { -var rbrace = /^(?:\{.*\}|\[.*\])$/; +var rbrace = /^(?:\{.*\}|\[.*\])$/, + rmultiDash = /([a-z])([A-Z])/g; jQuery.extend({ cache: {}, @@ -223,12 +224,13 @@ jQuery.fn.extend({ data = jQuery.data( this[0] ); if ( this[0].nodeType === 1 ) { - var attr = this[0].attributes, name; + var attr = this[0].attributes, name; for ( var i = 0, l = attr.length; i < l; i++ ) { name = attr[i].name; if ( name.indexOf( "data-" ) === 0 ) { - name = name.substr( 5 ); + name = jQuery.camelCase( name.substring(5) ); + dataAttr( this[0], name, data[ name ] ); } } @@ -282,7 +284,9 @@ 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 ) { - data = elem.getAttribute( "data-" + key ); + name = "data-" + key.replace( rmultiDash, "$1-$2" ).toLowerCase(); + + data = elem.getAttribute( name ); if ( typeof data === "string" ) { try { -- cgit v1.2.3