From 11e52bdaeae769dec384ca0eb286901122f35501 Mon Sep 17 00:00:00 2001 From: Colin Snover Date: Fri, 3 Dec 2010 01:19:39 -0600 Subject: [PATCH] Only try to get data attributes for a jQuery-wrapped object if it is actually an Element node. Fixes #7524. --- src/data.js | 16 +++++++++------- test/unit/data.js | 5 ++++- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/src/data.js b/src/data.js index f7f65ef..f1e031f 100644 --- a/src/data.js +++ b/src/data.js @@ -138,15 +138,17 @@ jQuery.fn.extend({ if ( typeof key === "undefined" ) { if ( this.length ) { - var attr = this[0].attributes, name; data = jQuery.data( this[0] ); - for ( var i = 0, l = attr.length; i < l; i++ ) { - name = attr[i].name; - - if ( name.indexOf( "data-" ) === 0 ) { - name = name.substr( 5 ); - dataAttr( this[0], name, data[ name ] ); + if ( this[0].nodeType === 1 ) { + 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 ); + dataAttr( this[0], name, data[ name ] ); + } } } } diff --git a/test/unit/data.js b/test/unit/data.js index 315043c..1a0f84c 100644 --- a/test/unit/data.js +++ b/test/unit/data.js @@ -79,7 +79,7 @@ test("jQuery.data", function() { }); test(".data()", function() { - expect(4); + expect(5); var div = jQuery("#foo"); strictEqual( div.data("foo"), undefined, "Make sure that missing result is undefined" ); @@ -90,6 +90,9 @@ test(".data()", function() { var nodiv = jQuery("#unfound"); equals( nodiv.data(), null, "data() on empty set returns null" ); + + var obj = { foo: "bar" }; + equals( jQuery(obj).data(), obj, "Retrieve data object from a wrapped JS object (#7524)" ); }) test(".data(String) and .data(String, Object)", function() { -- 1.7.10.4