Вы можете пройтись по дереву DOM и проверить свойство className
каждого элемента. Ходить по DOM-дереву намного проще, чем кажется людям:
var reMatch = /\bdestroy\b/;
function walk(node) {
var child, next, tagName;
switch (node.nodeType) {
case 1: // Element
// Element, we exempt some of them; the rest,
// check if they match
tagName = node.tagName.toUpperCase();
if (tagName !== "HTML" &&
tagName != "HEAD" &&
tagName !== "BODY" &&
!reMatch.test(node.className)) {
// Not exempt, doesn't have the class; remove it
node.parentNode.removeChild(node);
break;
}
/* FALL THROUGH TO */
case 9: // Document
// Document or Element, walk our child nodes
for (child = node.firstChild;
child;
child = next) {
// Important to grab the next one *before* visiting it,
// as visiting it may remove it!
next = child.nextSibling;
walk(child);
}
break;
}
}
А потом начинайте все:
walk(document.body);
... или в том же духе (это не проверено, но оно должно помочь вам). Очевидно, замените эти магические числа на константы (не все реализации определяют их на Node
, как они должны). Подробности в спецификациях DOM: DOM2 , DOM2 HTML , DOM3 и в ECMAScript (JavaScript) спецификация (для регулярного выражения ).