aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorColin Snover <github.com@zetafleet.com>2010-12-03 01:19:39 -0600
committerColin Snover <github.com@zetafleet.com>2010-12-03 01:19:39 -0600
commit11e52bdaeae769dec384ca0eb286901122f35501 (patch)
treebe7adaa3ec0b03f6dd51f1348291ea5dd89a8a15
parente1d6edf822f7f875f794849723b13bbf74dd3c83 (diff)
downloadjquery-11e52bdaeae769dec384ca0eb286901122f35501.tar.gz
jquery-11e52bdaeae769dec384ca0eb286901122f35501.zip
Only try to get data attributes for a jQuery-wrapped object if it is actually an Element node. Fixes #7524.
-rw-r--r--src/data.js16
-rw-r--r--test/unit/data.js5
2 files changed, 13 insertions, 8 deletions
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() {