Вот функция, которая даст вам самый внутренний элемент, который содержит весь выбор пользователя во всех основных браузерах (кроме случаев, когда выбрано несколько диапазонов, что поддерживается только в Firefox. Если это важно, я могу расширить пример разобраться и с этим делом тоже):
function getSelectionParentElement() {
var parentEl = null, sel;
if (window.getSelection) {
sel = window.getSelection();
if (sel.rangeCount) {
parentEl = sel.getRangeAt(0).commonAncestorContainer;
if (parentEl.nodeType != 1) {
parentEl = parentEl.parentNode;
}
}
} else if ( (sel = document.selection) && sel.type != "Control") {
parentEl = sel.createRange().parentElement();
}
return parentEl;
}