Никогда не работал с contenteditable блоками, может и есть способ получше, но я предложил бы парсинг html из строки (содержимого блока)
Тестовый html, который был в блоке:<p data-test="512">WDaW</p>
jQueryfunction parseHTML(text, callback) {
var $html = $($.parseHTML('<div>'+ text +'</div>'));
if (callback) callback($html);
return $html.children().unwrap();
}
parseHTML($('#contenteditable').text(), function($html) {
var $p = $('p', $html);
console.log({
p: $p.text(),
data: $p.data('test'),
html: $html.html()
});
});
Pure JavaScriptfunction parseHTML(text, callback) {
var html = function() {
var template = document.implementation.createHTMLDocument();
template.body.innerHTML = text;
return template.body.children;
}();
if (callback) callback(html[0]);
return html;
}
parseHTML(document.getElementById('contenteditable').innerText, function(html) {
console.log({
p: html.innerText,
data: html.getAttribute('data-test'),
html: html.outerHTML
});
});