From 3212a293695221df402317633adf63698d95efd1 Mon Sep 17 00:00:00 2001 From: Rick Waldron Date: Fri, 1 Mar 2013 19:02:57 -0500 Subject: [PATCH] Fixes #13548. .data should not miss attr() set data-* with hyphenated property names --- src/data.js | 8 ++++++++ test/unit/data.js | 13 ++++++++++++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/src/data.js b/src/data.js index 786477f64..fb97d2fda 100644 --- a/src/data.js +++ b/src/data.js @@ -264,6 +264,14 @@ jQuery.fn.extend({ if ( data !== undefined ) { return data; } + + // Attempt to get data from the cache + // with the key camelized + data = data_user.get( elem, camelKey ); + if ( data !== undefined ) { + return data; + } + // Attempt to "discover" the data in // HTML5 custom data-* attrs data = dataAttr( elem, key, undefined ); diff --git a/test/unit/data.js b/test/unit/data.js index 2eb48e742..cd8183fe1 100644 --- a/test/unit/data.js +++ b/test/unit/data.js @@ -497,7 +497,7 @@ test("jQuery.data should follow html5 specification regarding camel casing", fun div.remove(); }); -test("jQuery.data should not miss data with preset hyphenated property names", function() { +test(".data should not miss preset data-* w/ hyphenated property names", function() { expect(2); @@ -514,6 +514,17 @@ test("jQuery.data should not miss data with preset hyphenated property names", f }); }); +test(".data should not miss attr() set data-* with hyphenated property names", function() { + expect(1); + + var div = jQuery("
").appendTo("#qunit-fixture"); + + div.attr( "data-long-param", "test" ); + div.data( "long-param", { a: 2 }); + + deepEqual( div.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() { var div = jQuery("
", { id: "hyphened" }).appendTo("#qunit-fixture"), -- 2.39.5