Skip to content
Permalink
Browse files

Fixes #13550. .data should not miss attr() set data-* with hyphenated…

… property names. Closes gh-1189
  • Loading branch information...
mgol authored and rwaldron committed Mar 2, 2013
1 parent 8f72181 commit 761b96c3016e09613f356bd6070be04edec74d0f
Showing with 17 additions and 8 deletions.
  1. +4 −3 src/data.js
  2. +13 −5 test/unit/data.js
@@ -30,7 +30,7 @@ Data.prototype = {
if ( !unlock ) {
unlock = Data.uid++;
descriptor[ this.expando ] = { value: unlock };

// Secure it in a non-enumerable, non-writable property
try {
Object.defineProperties( owner, descriptor );
@@ -312,7 +312,8 @@ jQuery.fn.extend({
});

function dataAttr( elem, key, data ) {
var name;
var name,
camelKey = jQuery.camelCase( key );

// If nothing was found internally, try to fetch any
// data from the HTML5 data-* attribute
@@ -333,7 +334,7 @@ function dataAttr( elem, key, data ) {
} catch( e ) {}

// Make sure we set the data so it isn't changed later
data_user.set( elem, key, data );
data_user.set( elem, camelKey, data );
} else {
data = undefined;
}
@@ -515,14 +515,22 @@ test(".data should not miss preset data-* w/ hyphenated property names", functio
});

test(".data should not miss attr() set data-* with hyphenated property names", function() {
expect(1);
expect(2);

var div1 = jQuery("<div/>").appendTo("#qunit-fixture");

div1.attr( "data-long-param", "test" );
div1.data( "long-param", { a: 2 });

deepEqual( div1.data("long-param"), { a: 2 }, "data with property long-param was found" );

var div = jQuery("<div/>").appendTo("#qunit-fixture");
var div2 = jQuery("<div/>").appendTo("#qunit-fixture");

div.attr( "data-long-param", "test" );
div.data( "long-param", { a: 2 });
div2.attr( "data-long-param", "test" );
div2.data( "long-param" );
div2.data( "long-param", { a: 2 });

deepEqual( div.data("long-param"), { a: 2 }, "data with property long-param was found" );
deepEqual( div2.data("long-param"), { a: 2 }, "data with property long-param was found" );
});

test("jQuery.data supports interoperable hyphenated/camelCase get/set of properties with arbitrary non-null|NaN|undefined values", function() {

0 comments on commit 761b96c

Please sign in to comment.
You can’t perform that action at this time.