jQuery:获取div中所选文本的html源代码

时间:2012-04-07 15:39:16

标签: jquery

我想在div中获取选择文本的HTML源代码并提醒它。

这是我的代码:

if (!window.x) {
    x = {};
}
x.Selector = {};
x.Selector.getSelected = function() {
    var t = '';
    if (window.getSelection) {
        t = window.getSelection();
    } else if (document.getSelection) {
        t = document.getSelection();
    } else if (document.selection) {
        t = document.selection.createRange().text;
    }
    return t;
}

$(function() {

    $(document).bind("mouseup", function() {
        var mytext = x.Selector.getSelected();
        alert(mytext);
    });

Source

但是返回文字很简单。

有什么办法吗?

感谢您的帮助。

2 个答案:

答案 0 :(得分:3)

http://www.codingforums.com/showthread.php?t=154848#post762994建议如下:

function selHTML() {

    if (window.ActiveXObject) {
        var c = document.selection.createRange();
        return c.htmlText;
    }

    var nNd = document.createElement("p");
    var w = getSelection().getRangeAt(0);
    w.surroundContents(nNd);
    return nNd.innerHTML;
}

谷歌很好(通常无论如何): - )

演示:http://jsfiddle.net/rR8Sh/1/ 我添加了纯文本选择,以防标记未完全选择并使用span而不是p以避免添加换行符。它仍然会添加空<span>;我无法想出一种避免这种情况的方法。

答案 1 :(得分:1)

如果我理解正确,您想获取所选节点的HTML吗?试试这个:

function getSelectedNode() {
    if (document.selection) {
        return document.selection.createRange().parentElement();
    } else {
        var selection = window.getSelection();
        if (selection.rangeCount > 0)
                return selection.getRangeAt(0).startContainer.parentNode;
    }
}

借鉴this answer