Skip to content

Commit d9f68d3

Browse files
committed
[removeElementsByAttr] fix removing elements when class is empty
Ref #937 Regexp didn't not cover the case when class list is empty.
1 parent 4490d62 commit d9f68d3

File tree

2 files changed

+32
-25
lines changed

2 files changed

+32
-25
lines changed

plugins/removeElementsByAttr.js

+23-25
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ exports.active = false;
77
exports.description = 'removes arbitrary elements by ID or className (disabled by default)';
88

99
exports.params = {
10-
id: [],
11-
class: []
10+
id: [],
11+
class: []
1212
};
1313

1414
/**
@@ -51,30 +51,28 @@ exports.params = {
5151
* @author Eli Dupuis (@elidupuis)
5252
*/
5353
exports.fn = function(item, params) {
54-
var elemId, elemClass;
55-
56-
// wrap params in an array if not already
57-
['id', 'class'].forEach(function(key) {
58-
if (!Array.isArray(params[key])) {
59-
params[key] = [ params[key] ];
60-
}
61-
});
62-
63-
// abort if current item is no an element
64-
if (!item.isElem()) {
65-
return;
54+
// wrap params in an array if not already
55+
['id', 'class'].forEach(function(key) {
56+
if (!Array.isArray(params[key])) {
57+
params[key] = [ params[key] ];
6658
}
59+
});
6760

68-
// remove element if it's `id` matches configured `id` params
69-
elemId = item.attr('id');
70-
if (elemId) {
71-
return params.id.indexOf(elemId.value) === -1;
72-
}
61+
// abort if current item is no an element
62+
if (!item.isElem()) {
63+
return;
64+
}
7365

74-
// remove element if it's `class` contains any of the configured `class` params
75-
elemClass = item.attr('class');
76-
if (elemClass) {
77-
var hasClassRegex = new RegExp(params.class.join('|'));
78-
return !hasClassRegex.test(elemClass.value);
79-
}
66+
// remove element if it's `id` matches configured `id` params
67+
const elemId = item.attr('id');
68+
if (elemId && params.id.length !== 0) {
69+
return params.id.includes(elemId.value) === false;
70+
}
71+
72+
// remove element if it's `class` contains any of the configured `class` params
73+
const elemClass = item.attr('class');
74+
if (elemClass && params.class.length !== 0) {
75+
const classList = elemClass.value.split(' ');
76+
return params.class.some(item => classList.includes(item)) === false;
77+
}
8078
};
+9
Loading

0 commit comments

Comments
 (0)