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

Commit a00c9bc

Browse files
committed
fix(jqLite): fix regression where mutating the dom tree on a event breaks jqLite.remove
Closes #8359
1 parent 34781f1 commit a00c9bc

File tree

2 files changed

+11
-1
lines changed

2 files changed

+11
-1
lines changed

src/jqLite.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -248,7 +248,7 @@ function jqLiteDealoc(element, onlyDescendants){
248248

249249
if (element.childNodes && element.childNodes.length) {
250250
// we use querySelectorAll because documentFragments don't have getElementsByTagName
251-
var descendants = element.getElementsByTagName ? element.getElementsByTagName('*') :
251+
var descendants = element.getElementsByTagName ? sliceArgs(element.getElementsByTagName('*')) :
252252
element.querySelectorAll ? element.querySelectorAll('*') : [];
253253
for (var i = 0, l = descendants.length; i < l; i++) {
254254
jqLiteRemoveData(descendants[i]);

test/jqLiteSpec.js

+10
Original file line numberDiff line numberDiff line change
@@ -535,6 +535,16 @@ describe('jqLite', function() {
535535
browserTrigger(span);
536536
expect(log).toEqual('click;');
537537
});
538+
539+
it('should work if the descendants of the element change while it\'s being removed', function() {
540+
var div = jqLite('<div><p><span>text</span></p></div>');
541+
div.find('p').on('$destroy', function() {
542+
div.find('span').remove();
543+
});
544+
expect(function() {
545+
div.remove();
546+
}).not.toThrow();
547+
});
538548
});
539549
});
540550

0 commit comments

Comments
 (0)