获取范围中包含的HTML元素

时间:2013-12-11 09:20:20

标签: javascript jquery html

我正在使用document.getSelection()来选择一些文字。我想知道所选范围包含的元素类型(我特别想知道它是否是锚标记)。

var selection = document.getSelection();
var range = selection.getRangeAt(0);

所以我可以得到范围,但我怎么知道该范围内的元素是什么?很高兴使用普通的js或jQuery。

修改

以下是我提出的建议:

var updateLink = function(url) {

    var selection = document.getSelection();
    var range = selection.getRangeAt(0);
    if (range != 0) {
        var containerElement = range.commonAncestorContainer;
        if (containerElement.nodeType != 1) {
            containerElement = containerElement.parentNode;
            var e = $(containerElement);
            e.attr('href', url);
        }

    }

}//end

2 个答案:

答案 0 :(得分:2)

试试这个:

var obj = document.getSelection();
var parentNode = $(obj.anchorNode).parent();

这是jsfiddle

答案 1 :(得分:1)

您可以使用cloneContents()方法:

DEMO

$(document).mouseup(function(){
    var range = window.getSelection().getRangeAt(0),
        selectionContents = range.cloneContents();

    alert($(selectionContents.childNodes).filter('a').length);
});