每次尝试时都会给我一个p
标记,即使父母应该是span
var sel = window.getSelection();
console.log(sel.getRangeAt(0));
是否有任何解决方案或方法可以做到这一点或获得一些有用信息的链接怎么做?
答案 0 :(得分:1)
使用range
属性startContainer,endContainer和commonAncestorContainer来确定包含元素的选择。
在以下示例中,选择文本" bbb"然后按下按钮"按我"。 commonAncestorContainer
符合预期的span
元素:
$('#pressme').click(function(){
var rng = window.getSelection().getRangeAt(0);
alert(rng.commonAncestorContainer.parentNode.tagName);
});

#editor {
width: 500px;
height: 400px;
padding: 4px;
border: solid 1px gray;
margin-bottom: 4px;
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id='editor' contenteditable='true'>aaa <span style="color:red">bbb</span> ccc</div>
<input id='pressme' type='button' value='press me' />
&#13;
尝试选择文本的各个部分,看看它如何改变结果。