获取范围中包含的HTML元素

Get HTML element contained in range

本文关键字:HTML 元素 包含 范围 获取      更新时间:2024-06-11

我正在使用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

试试这个:

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

这是jsfiddle

您可以使用cloneContents()方法:

演示

$(document).mouseup(function(){
    var range = window.getSelection().getRangeAt(0),
        selectionContents = range.cloneContents();
    alert($(selectionContents.childNodes).filter('a').length);
});