Make .data(Object) extend the existing data object. Fixes #6692.
authorjeresig <jeresig@gmail.com>
Wed, 22 Sep 2010 15:52:32 +0000 (11:52 -0400)
committerjeresig <jeresig@gmail.com>
Wed, 22 Sep 2010 15:52:32 +0000 (11:52 -0400)
src/data.js
test/unit/data.js

index b7a6ab9..ac082dd 100644 (file)
@@ -52,9 +52,10 @@ jQuery.extend({
                // want to manipulate it.
                if ( typeof name === "object" ) {
                        if ( isNode ) {
-                               cache[ id ] = jQuery.extend(true, {}, name);
+                               cache[ id ] = jQuery.extend(cache[ id ], name);
+
                        } else {
-                               store = jQuery.extend(true, {}, name);
+                               store = jQuery.extend(cache[ id ], name);
                                cache[ id ] = function() {
                                        return store;
                                };
@@ -63,6 +64,7 @@ jQuery.extend({
                } else if ( !cache[ id ] ) {
                        if ( isNode ) {
                                cache[ id ] = {};
+
                        } else {
                                store = {};
                                cache[ id ] = function() {
index 54a89d9..1163ddc 100644 (file)
@@ -25,7 +25,7 @@ test("expando", function(){
 });
 
 test("jQuery.data", function() {
-       expect(12);
+       expect(13);
        var div = document.createElement("div");
 
        ok( jQuery.data(div, "test") === undefined, "Check for no data exists" );
@@ -47,9 +47,11 @@ test("jQuery.data", function() {
        jQuery.data(div, "test", null);
        ok( jQuery.data(div, "test") === null, "Check for null data");
 
+       jQuery.data(div, "test3", "orig");
        jQuery.data(div, { "test": "in", "test2": "in2" });
        equals( jQuery.data(div, "test"), "in", "Verify setting an object in data." );
        equals( jQuery.data(div, "test2"), "in2", "Verify setting an object in data." );
+       equals( jQuery.data(div, "test3"), "orig", "Verify original not overwritten." );
 
        var obj = {};
        jQuery.data( obj, "prop", true );
@@ -61,7 +63,7 @@ test("jQuery.data", function() {
 });
 
 test(".data()", function() {
-       expect(1);
+       expect(2);
 
        var div = jQuery("#foo");
        div.data("test", "success");