Вот сделал, но очень криво работает:
setTag = function(tag) {
var mainDiv = document.getElementById(sett.id),
sel = getSel(mainDiv),
val = editor.html();
for(var i=sel.start; i>0; i--){
if(val[i]==' ' || val[i]=='<'){
sel.start=i;
break;
}
}
for(var i=sel.end; i<val.length; i++){
if(val[i]==' ' || val[i]=='<'){
sel.end=i;
break;
}
}
var fragment = val.substr(sel.start, (sel.end-sel.start));
if(fragment.search("<"+tag+">")==0){
fragment=fragment.replace("<"+tag+">","");
fragment=fragment.replace("</"+tag+">","");
}
var text = val.substr(0, sel.start) + "<"+tag+">" + fragment + "</"+tag+">" + val.substr(sel.end);
editor.html(text);
$(".html").val(text);
}
надо что-то другое думать(
если бы получить родительский элемент исходя из положения курсора (sel.start)....