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

Commit 3d68b95

Browse files
committed
fix(jqLite): silently ignore after() if element has no parent
Previously, the element was always assumed to have a parent and an error was thrown when that was not the case. This commit makes jqLite consistent with jQuery, which silently ignores a call on elements that do not have a parent. Fixes #15331 Closes #15367 Closes #15475
1 parent 163aca3 commit 3d68b95

File tree

2 files changed

+16
-5
lines changed

2 files changed

+16
-5
lines changed

src/jqLite.js

+8-5
Original file line numberDiff line numberDiff line change
@@ -979,12 +979,15 @@ forEach({
979979

980980
after: function(element, newElement) {
981981
var index = element, parent = element.parentNode;
982-
newElement = new JQLite(newElement);
983982

984-
for (var i = 0, ii = newElement.length; i < ii; i++) {
985-
var node = newElement[i];
986-
parent.insertBefore(node, index.nextSibling);
987-
index = node;
983+
if (parent) {
984+
newElement = new JQLite(newElement);
985+
986+
for (var i = 0, ii = newElement.length; i < ii; i++) {
987+
var node = newElement[i];
988+
parent.insertBefore(node, index.nextSibling);
989+
index = node;
990+
}
988991
}
989992
},
990993

test/jqLiteSpec.js

+8
Original file line numberDiff line numberDiff line change
@@ -2182,6 +2182,14 @@ describe('jqLite', function() {
21822182
span.after('abc');
21832183
expect(root.html().toLowerCase()).toEqual('<span></span>abc');
21842184
});
2185+
2186+
2187+
it('should not throw when the element has no parent', function() {
2188+
var span = jqLite('<span></span>');
2189+
expect(function() { span.after('abc'); }).not.toThrow();
2190+
expect(span.length).toBe(1);
2191+
expect(span[0].outerHTML).toBe('<span></span>');
2192+
});
21852193
});
21862194

21872195

0 commit comments

Comments
 (0)