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

Commit 32ee5a5

Browse files
committed
perf(jqLite): avoid repeated add/removeAttribute in jqLiteRemoveClass
Fixes #16078 Closes #16131
1 parent 3650723 commit 32ee5a5

File tree

1 file changed

+7
-5
lines changed

1 file changed

+7
-5
lines changed

src/jqLite.js

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -420,13 +420,15 @@ function jqLiteHasClass(element, selector) {
420420

421421
function jqLiteRemoveClass(element, cssClasses) {
422422
if (cssClasses && element.setAttribute) {
423+
var existingClasses = (' ' + (element.getAttribute('class') || '') + ' ')
424+
.replace(/[\n\t]/g, ' ');
425+
423426
forEach(cssClasses.split(' '), function(cssClass) {
424-
element.setAttribute('class', trim(
425-
(' ' + (element.getAttribute('class') || '') + ' ')
426-
.replace(/[\n\t]/g, ' ')
427-
.replace(' ' + trim(cssClass) + ' ', ' '))
428-
);
427+
cssClass = trim(cssClass);
428+
existingClasses = existingClasses.replace(' ' + cssClass + ' ', ' ');
429429
});
430+
431+
element.setAttribute('class', trim(existingClasses));
430432
}
431433
}
432434

0 commit comments

Comments
 (0)