我想获取光标所在的父元素的属性。
我现在已经完全失败了大约两个小时,所以我发帖看看是否有人有任何建议。这是我的功能,但不知道为什么parentID
只返回undefined:
function getAttrOfParent() {
var newRange = rangy.getSelection().getRangeAt(0);
var parentElement = newRange.commonAncestorContainer;
var parentID = $(parentElement).attr('id');
alert(parentID);
}
这可以很好地获取父元素的文本......
function getTextOfParent() {
var newRange = rangy.getSelection().getRangeAt(0);
var parentElement = newRange.commonAncestorContainer;
var parentText = $(parentElement).text();
alert(parentText);
}
...这样可以获得指定元素的标题。
function getAttrOfElement() {
var parentID = $('#1').attr('id');
alert(parentID);
}
Here's my jsFiddle,您必须在文本区域内单击才能使前两个功能起作用。
答案 0 :(得分:1)
parentElement = newRange.commonAncestorContainer
没有为您提供父元素,它会为您提供父节点。
如果您console.log(parentElement)
看到正在选择的内容,这是非常明显的。
如果你在一个跨度(有ids)内完全选择文本,那么你会得到 text 节点(它没有id)。
如果您选择更多文字,则会获得段落元素节点(它没有ID)。
您可能想尝试var parentElement = $(newRange.commonAncestorContainer).parents('span');