git.asbjorn.biz
/
jquery.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
9ac9aae
)
Fix for bug #1546 where a deep copy was attempted of DOM elements (which isn't needed).
author
John Resig
<jeresig@gmail.com>
Wed, 17 Oct 2007 23:35:57 +0000
(23:35 +0000)
committer
John Resig
<jeresig@gmail.com>
Wed, 17 Oct 2007 23:35:57 +0000
(23:35 +0000)
src/core.js
patch
|
blob
|
history
test/unit/core.js
patch
|
blob
|
history
diff --git
a/src/core.js
b/src/core.js
index
d396ee9
..
3aea325
100644
(file)
--- a/
src/core.js
+++ b/
src/core.js
@@
-534,7
+534,7
@@
jQuery.extend = jQuery.fn.extend = function() {
continue;
\r
\r
// Recurse if we're merging object values
\r
continue;
\r
\r
// Recurse if we're merging object values
\r
- if ( deep && typeof options[ name ] == "object" && target[ name ] )
\r
+ if ( deep && typeof options[ name ] == "object" && target[ name ] && !options[ name ].nodeType )
\r
jQuery.extend( target[ name ], options[ name ] );
\r
\r
// Don't bring in undefined values
\r
jQuery.extend( target[ name ], options[ name ] );
\r
\r
// Don't bring in undefined values
\r
diff --git
a/test/unit/core.js
b/test/unit/core.js
index
7280ab9
..
f5fc895
100644
(file)
--- a/
test/unit/core.js
+++ b/
test/unit/core.js
@@
-778,7
+778,7
@@
test("is(String)", function() {
});
test("$.extend(Object, Object)", function() {
});
test("$.extend(Object, Object)", function() {
- expect(10);
+ expect(11);
var settings = { xnumber1: 5, xnumber2: 7, xstring1: "peter", xstring2: "pan" },
options = { xnumber2: 1, xstring2: "x", xxx: "newstring" },
var settings = { xnumber1: 5, xnumber2: 7, xstring1: "peter", xstring2: "pan" },
options = { xnumber2: 1, xstring2: "x", xxx: "newstring" },
@@
-786,9
+786,9
@@
test("$.extend(Object, Object)", function() {
merged = { xnumber1: 5, xnumber2: 1, xstring1: "peter", xstring2: "x", xxx: "newstring" },
deep1 = { foo: { bar: true } },
deep1copy = { foo: { bar: true } },
merged = { xnumber1: 5, xnumber2: 1, xstring1: "peter", xstring2: "x", xxx: "newstring" },
deep1 = { foo: { bar: true } },
deep1copy = { foo: { bar: true } },
- deep2 = { foo: { baz: true } },
- deep2copy = { foo: { baz: true } },
- deepmerged = { foo: { bar: true, baz: true } };
+ deep2 = { foo: { baz: true }, foo2: document },
+ deep2copy = { foo: { baz: true }, foo2: document },
+ deepmerged = { foo: { bar: true, baz: true }, foo2: document };
jQuery.extend(settings, options);
isObj( settings, merged, "Check if extended: settings must be extended" );
jQuery.extend(settings, options);
isObj( settings, merged, "Check if extended: settings must be extended" );
@@
-801,6
+801,7
@@
test("$.extend(Object, Object)", function() {
jQuery.extend(true, deep1, deep2);
isObj( deep1.foo, deepmerged.foo, "Check if foo: settings must be extended" );
isObj( deep2.foo, deep2copy.foo, "Check if not deep2: options must not be modified" );
jQuery.extend(true, deep1, deep2);
isObj( deep1.foo, deepmerged.foo, "Check if foo: settings must be extended" );
isObj( deep2.foo, deep2copy.foo, "Check if not deep2: options must not be modified" );
+ equals( deep1.foo2, document, "Make sure that a deep clone was not attempted on the document" );
var defaults = { xnumber1: 5, xnumber2: 7, xstring1: "peter", xstring2: "pan" },
defaultsCopy = { xnumber1: 5, xnumber2: 7, xstring1: "peter", xstring2: "pan" },
var defaults = { xnumber1: 5, xnumber2: 7, xstring1: "peter", xstring2: "pan" },
defaultsCopy = { xnumber1: 5, xnumber2: 7, xstring1: "peter", xstring2: "pan" },