2012-05-12 6 views
7

で選択したテキストの親ノードを取得します親ノード/要素。たとえば、テキストを選択する場合、私は<a href="http://code.google.com/p/rangy/" rel="noreferrer">rangy</a>ライブラリを使用していますし、次のように編集可能なコンテンツでテキストを選択することができますrangyライブラリ

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

強力なノードまたはH1要素を含めるにはどうすればよいですか?

+1

私は次のコードを使用しています。sel.anchorNode.parentNode.nodeName – Frank

答えて

8

sel.anchorNode.parentNodeは、ノードの親ノードを選択肢の1つの端だけにします。最も全体的に最も内側にある要素を取得するには、選択範囲から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

関連する問題

 関連する問題