2016-05-12 6 views
0

選択したテキストの親要素を取得しようとしていますが、選択したテキストは置き換えられていません。ここJavascript - 選択内容を置換した後、選択したテキストの親を取得できない

コードは、(私は他のソースから変更)である:

jQuery(document).ready(function($){ 
    $("#getparent").on("click touch", function(){ 
     var selection, elements = [], ranges = [], rangeCount = 0, parent_id, parent_class;  
     if (window.getSelection){ 
      selection = window.getSelection(); 
      if (selection.rangeCount) { 
       var i = selection.rangeCount; 
       while (i--) { 
        selectionrange = selection.getRangeAt(i); 
        ranges[i] = selectionrange.cloneRange(); 

        // SELECTION START'S CONTAINER     
        var parentDataStart = selectionrange.startContainer.childNodes[ranges[i].startOffset]; 
        parentDataStart = parentDataStart || selectionrange.startContainer.parentNode; 
        var parentTagStart = parentDataStart.tagName.toLowerCase(); // parent tag name of selection 

        console.log(parentTagStart); 
        alert(parentTagStart); 

        // SELECTED TEXT NODE 
        selectedtext = selection.toString();      
        elements[i] = document.createTextNode(selectedtext); 
        ranges[i].deleteContents(); 
        ranges[i].insertNode(elements[i]); 
        ranges[i].selectNode(elements[i]); 
       } 

       // Restore text selection 
       selection.removeAllRanges(); 
       i = ranges.length; 
       while (i--) { 
        selection.addRange(ranges[i]); 
       } 
      } 
     } 
    }); 
}); 

、ここでは、ノード選択境界がノードのコンテンツに移動する必要がありフィドル

DEMO

答えて

0

あります。 代わりに代わりにselectNodeContentsを使用してください。

その質問の場合、それは次のようになります。 ranges[i].selectNodeContents(elements[i]);の代わりranges[i].selectNode(elements[i]);

更新:

Fiddle Demo

関連する問題