如何告知所有者选择?

时间:2011-03-28 23:42:07

标签: javascript jquery

如何判断选择的父节点是谁?

我正在选择:

        var userSelection;
        if (window.getSelection) {
            userSelection = window.getSelection();
        }
        else if (document.selection) { 
            userSelection = document.selection.createRange();
        }

        var selectedText = userSelection;
        if (userSelection.text)
            selectedText = userSelection.text;

但是我如何判断谁是选择的父节点?也就是说,如果整个选择来自单个div,我想知道div。

2 个答案:

答案 0 :(得分:0)

试试$(':contains(' + selectedText + ')').parent()。这有用吗?

答案 1 :(得分:0)

以下内容将返回所有主流浏览器中所选内容的父元素,并带有以下警告:

  • 获取父节点(可以是任何类型,但最常见的是文本节点)在大多数浏览器上都很容易,但在IE< 9.如果您需要这样做,有一些库,例如我自己的Rangy,它们为所有主流浏览器提供DOM范围和选择支持。
  • 以下功能仅考虑选择范围内的第一个范围。 Firefox是唯一支持多种选择的主流浏览器;只考虑第一个。

代码:

function getSelectionContainerElement() {
    var container = null;
    if (typeof window.getSelection != "undefined") {
        var sel = window.getSelection();
        if (sel.rangeCount) {
            container = sel.getRangeAt(0).commonAncestorContainer;
            if (container.nodeType != 1) {
                container = container.parentNode;
            }
        }
    } else if (typeof document.selection != "undefined" && document.selection.type != "Control") {
        container = document.selection.createRange().parentElement();
    }
    return container;
}