【发布时间】:2015-04-28 03:49:03
【问题描述】:
我有一个函数,当使用鼠标选择文本时返回选择的父元素。
Javascript
$("#p1").on('mouseup',function(evt){
var selectedParentElement = null,range = window.getSelection().getRangeAt(0);
if (rangeSelectsSingleNode(range)) {
selectedParentElement = range.startContainer.childNodes[range.startOffset];
} else if (range.startContainer.nodeType === 3) {
selectedParentElement = range.startContainer.parentNode;
} else {
selectedParentElement = range.startContainer;
}
console.log(selectedParentElement);
})
function rangeSelectsSingleNode(range) {
var startNode = range.startContainer;
return startNode === range.endContainer &&
startNode.hasChildNodes() &&
range.endOffset === range.startOffset + 1;
}
在 chrome 和 firefox 中,当我选择 contenteditable 段落内的链接时,该函数返回正确的父节点,即 <a>,但在 IE 10 中,它返回父元素为“段落”
【问题讨论】:
-
@madalinivascu jQuery parent 返回直接父元素,它与范围无关
标签: javascript jquery contenteditable