Получить родительский элемент выделенного текста - PullRequest
15 голосов
/ 27 августа 2011

Можно ли получить родительский элемент выделенного текста на странице?Например:

<div class="someparent">

Selection of this text should refer to the 'someparent' class.

<span class="spanparent">If this is selected, the parent should be this span</span>

</div>

Поскольку при получении выбранного текста он обычно получает его из окна или документа (в зависимости от браузера), но возможно ли получить родительский элемент выделенного текста?

Ответы [ 2 ]

37 голосов
/ 27 августа 2011

Вот функция, которая даст вам самый внутренний элемент, который содержит весь выбор пользователя во всех основных браузерах (кроме случаев, когда выбрано несколько диапазонов, что поддерживается только в 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;
}
8 голосов
/ 11 октября 2014

Я бы предложил использовать это

window.getSelection().anchorNode.parentElement

Я тестировал в Safari OSX 10,9

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...