2012-05-12 11 views
7

ich die rangy Bibliothek bin mit und bearbeitbaren Text in einem Inhalt auswählen können, wie folgt:Erhalten des übergeordneten Knoten für ausgewählten Text mit rangy Bibliothek

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

ich nicht herausfinden kann, wie in dem markierten Text zu erhalten Elternknoten/Element Zum Beispiel, wenn ich Text auswähle, der

ist

Wie kann ich den starken Knoten oder H1-Element auch einschließen?

+1

Um etwas mehr herum ich sehe, dass ich verwenden kann: sel.anchorNode.parentNode.nodeName – Frank

Antwort

8

sel.anchorNode.parentNode erhalten Sie den übergeordneten Knoten des Knotens mit nur einem Ende der Auswahl. Um das innerste enthaltende Element für die gesamte Auswahl zu erhalten, ist es am einfachsten, einen Bereich von der Auswahl zu erhalten und seine commonAncestorContainer Eigenschaft anzuschauen (die ein Textknoten sein kann, in diesem Fall müssen Sie seinen Elternknoten erhalten):

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

Vielen Dank sehr! – Frank

+0

Dies funktioniert nur, wenn wir Text im 'strong' oder' h1' Tag auswählen, nicht wenn beide ausgewählt sind. Wie funktioniert das für ausgewählte Fragmente für beide Tags (text: text my)? – kicaj

Verwandte Themen