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

Commit 2f8db1b

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 838cf4b commit 2f8db1b

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
@@ -636,7 +636,9 @@ describe('angular', function() {
636636
expect(dst.jqObject).not.toBe(src.jqObject);
637637

638638
expect(isElement(dst.element)).toBeTruthy();
639+
expect(jqLite(dst.element)).not.toBe(dst.element); // i.e it is a DOM element
639640
expect(isElement(dst.jqObject)).toBeTruthy();
641+
expect(jqLite(dst.jqObject)).toBe(dst.jqObject); // i.e it is a jqLite/jquery object
640642
});
641643
});
642644

0 commit comments

Comments
 (0)