2012-05-12 89 views
7

我使用的rangy庫,如下可以選擇在內容文字可編輯選定的文本:獲取父節點與瘦長庫

var sel = rangy.getSelection(); 
alert(sel); 

我無法弄清楚如何讓所選擇的文本父節點/元素。例如,如果我選擇的文本是

<strong>My Text</strong> 
or 
<h1>My Title</h1> 

如何包含強節點或H1元素?

+1

梅西一些更多我看到我可以使用:sel.anchorNode.parentNode.nodeName – Frank

回答

8

sel.anchorNode.parentNode會讓您獲得僅包含選區一端的節點的父節點。要獲得整個選區的最內層元素,最簡單的方法是從選區中獲取一個Range並查看其commonAncestorContainer屬性(可能是文本節點,在這種情況下,您需要獲取其父項):

var sel = rangy.getSelection(); 
if (sel.rangeCount > 0) { 
    var range = sel.getRangeAt(0); 
    var parentElement = range.commonAncestorContainer; 
    if (parentElement.nodeType == 3) { 
     parentElement = parentElement.parentNode; 
    } 
} 
+0

非常感謝! – Frank

+0

只有當我們在'strong'或'h1'標籤中選擇文本時,纔會有效,而不是在同時選中時。對於這兩個標籤(text:text my)的選定片段如何做到這一點? – kicaj