Как найти и удалить все повторяющийся классы documentBody documentBodyOld.
То есть
структура такая
div
div class=documentBody documentBodyOld
div class=documentBody documentBodyOld(этот удалить)
/div
div
div class=documentBody documentBodyOld
div class=documentBody documentBodyOld(этот удалить)
/div
…
div
div class=documentBody documentBodyOld
div class=documentBody documentBodyOld(этот удалить)
/div
Способов куча. Расскажу про тот что нравится мне.
- Делаем массив из списка классов
- Из массива делаем новый без дубликатов. Тут красивый трюк бизарующийся на том что что метод массива
indexOf
находит индекс первого вхождения элемента. - Делаем из массива строку и записываем ее в
className
function removeDuplicatedClasses(node) {
var classNames = node.className.split(' ')
var uniqueClassNames = classNames.filter(function (className, index, all) {
// если indexOf вернул не то значение индекса, которое соответвует значению className
// значит текущее значение className встречается где-то раньше в массиве all
// значит элемент не уникальный, не включаем его в результат фильтрации
return all.indexOf(className) === index
})
node.className = uniqueClassNames.join(' ')
}