From: Colin Snover Date: Fri, 3 Dec 2010 07:19:39 +0000 (-0600) Subject: Only try to get data attributes for a jQuery-wrapped object if it is actually an... X-Git-Tag: 1.5b1~114^2 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=refs%2Fpull%2F119%2Fhead;p=jquery.git Only try to get data attributes for a jQuery-wrapped object if it is actually an Element node. Fixes #7524. --- diff --git a/src/data.js b/src/data.js index f7f65efeb..f1e031fff 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 315043ca1..1a0f84c1f 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() {