2012-05-12 2 views
7
나는 rangy 라이브러리를 사용하고 다음과 같이 편집 가능한 콘텐츠의 텍스트를 선택할 수 있습니다

으로 선택한 텍스트의 부모 노드를 얻기 부모 노드/요소. 나는 텍스트를 선택하고있어 예를 들어, 내가 강한 노드 나 또한 H1 요소를 포함 할 수있는 방법은 넓은 도서관

<strong>My Text</strong> 
or 
<h1>My Title</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' 태그에서 텍스트를 선택할 때만 작동하며 둘 다 선택되지 않은 경우에만 작동합니다. 어떻게 두 태그 (텍스트 : 텍스트 내)에 대한 선택한 조각을 어떻게합니까? – kicaj