<div draggable="true" ondragstart="drag(event)" id="item_col-2" class="layout_el col-2 gap">
<div class="g-grid" ondrop="drop(event, this)" ondragover="allowDrop(event)">123</div>
<div class="g-grid" ondrop="drop(event, this)" ondragover="allowDrop(event)">321</div>
</div>
<div class="col-2 gap">
<div class="g-grid">123</div>
<div class="g-grid">321</div>
</div>
Есть некий конструктор страницы. Вставляешь туда разные блоки редактируешь и прочее, и при получении разметки страницы через .html(), вся эта требуха остается, хотелось чтоб он на каком-то этапе удалялась, и можно было в последствии сохранить "чистый код" в базу данных
var str = `<div draggable="true" onclick="return false;" id="item_col-2" class="layout_el wtf col-2 gap">
<div class="g-grid" ondrop="drop(event, this)" ondragover="allowDrop(event)">123</div>
<div class="g-grid" ondrop="drop(event, this)" ondragover="allowDrop(event)">321</div>
</div>`;
// Допустимые классы
const allowClasses = new Set(['col-2', 'gap', 'g-grid']);
const wrapper = document.createElement('div');
wrapper.innerHTML = str;
wrapper.querySelectorAll('*').forEach(el => {
[...el.attributes].forEach(attr => {
if (attr.name !== 'class') {
el.removeAttribute(attr.name);
} else {
[...new Set(el.classList)].filter(x => !allowClasses.has(x)).forEach(cls => {
el.classList.remove(cls);
});
}
});
});
console.log(wrapper.innerHTML);
const string = `<div draggable="true" ondragstart="drag(event)" id="item_col-2" class="layout_el col-2 gap">
<div class="g-grid" ondrop="drop(event, this)" ondragover="allowDrop(event)">123</div>
<div class="g-grid" ondrop="drop(event, this)" ondragover="allowDrop(event)">321</div>
</div>`;
const reg = /<\w+|class=".+?"|>|<\/\w+>|[^>]+?(?=<)|/igm;
const result = string.match(reg).join(" ").replace(/\s\s+/g, ' ');
console.log(result);