Если вам нужен самый глубокий элемент, содержащий всю выделенную область, самый простой способ - получить объект Range
из выделенной области и использовать его свойство commonAncestorContainer
.
jsFiddle: http://jsfiddle.net/5LvEG/1/
Код:
function getSelectionContainerElementId() {
var sel = window.getSelection();
if (sel.rangeCount > 0) {
var range = sel.getRangeAt(0);
var container = range.commonAncestorContainer;
// container could be a text node, so use its parent if so
if (container.nodeType == 3) {
container = container.parentNode;
}
return container.id;
}
return null;
}
alert(getSelectionContainerElementId());