Вообще согласен, что лишнего много будет, но это Html редактор, итоговая страница будет без спанов. они просто удалятся.
Функция применро такая
function wrap_all_text(elem){
elem.children().each(function(){
wrap_all_text($(this))
})
elem.contents().filter(function() {
return this.nodeType === 3 && $.trim(this.nodeValue) !== '';
})
.wrap('<span>');
}
Единственное, что он пока спаном оборачивает и теги, где json данные хранятся, это сейчас буду править