Skip to content
This repository was archived by the owner on Apr 12, 2024. It is now read-only.

Commit 75292a6

Browse files
fix(merge): ensure that jqlite->jqlite and DOM->DOM
Previously we were wrapping DOM elements into jqlite objects when cloning and vice versa. Fixes #12286 (comment)
1 parent 4ff6c85 commit 75292a6

File tree

2 files changed

+5
-1
lines changed

2 files changed

+5
-1
lines changed

src/Angular.js

+3-1
Original file line numberDiff line numberDiff line change
@@ -360,8 +360,10 @@ function baseExtend(dst, objs, deep) {
360360
dst[key] = new Date(src.valueOf());
361361
} else if (isRegExp(src)) {
362362
dst[key] = new RegExp(src);
363+
} else if (src.nodeName) {
364+
dst[key] = src.cloneNode(true);
363365
} else if (isElement(src)) {
364-
dst[key] = src[0] ? jqLite(src).clone()[0] : jqLite(src).clone();
366+
dst[key] = jqLite(src).clone();
365367
} else {
366368
if (!isObject(dst[key])) dst[key] = isArray(src) ? [] : {};
367369
baseExtend(dst[key], [src], true);

test/AngularSpec.js

+2
Original file line numberDiff line numberDiff line change
@@ -649,7 +649,9 @@ describe('angular', function() {
649649
expect(dst.jqObject).not.toBe(src.jqObject);
650650

651651
expect(isElement(dst.element)).toBeTruthy();
652+
expect(jqLite(dst.element)).not.toBe(dst.element); // i.e it is a DOM element
652653
expect(isElement(dst.jqObject)).toBeTruthy();
654+
expect(jqLite(dst.jqObject)).toBe(dst.jqObject); // i.e it is a jqLite/jquery object
653655
});
654656
});
655657

0 commit comments

Comments
 (0)