2016-08-13 77 views
0

假設我選擇了一些文本。我想要一個<div>出現在所選文本的開頭。如何根據文本選擇位置來定位div

到目前爲止我的代碼來跟蹤所選文本:

$(document).ready(function() { 
 
    
 
    $("#actual_verse").mouseup(function() { 
 
    var text = ""; 
 
    if (window.getSelection) { 
 
     text = window.getSelection().toString(); 
 
    } else if (document.selection && document.selection.type != "Control") { 
 
     text = document.selection.createRange().text; 
 
    } 
 
    
 
    if (/\S/.test(text)) { 
 
     alert(text); 
 
    } 
 
    
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<span id='actual_verse'> A justo sit aut sit sed. Wisi a cras sed. Feugiat mus nulla sagittis proin, feugiat accumsan turpis neque, velit nec odio bibendum, cum dui mi turpis interdum, aptent risus vestibulum eu vitae sed. Nulla facilisis, id quis cubilia vel suscipit, fermentum ante aliquam nunc. Scelerisque lacinia, ut molestie dui libero arcu elit nec, faucibus tenetur maecenas sit ipsum rutrum. Non amet erat non sit quis, nonummy magna elit integer in sed in, suspendisse quis velit blandit, interdum quam dui mollis vestibulum elementum, urna donec eros eget. Mauris aliquam montes a, sem est sed, eveniet lacus nibh, donec ornare sit, aptent sit rutrum gravida. Wisi et amet lobortis. </span>

現在如何做一個<div>出現在所選文本的開始?

+0

你想換行選定的文本,或者你想添加一個'div'作爲提示框到選定文本的開始處? – skobaljic

+0

你不能在'span'中嵌套div,是無效的html。 –

回答

0

如果要放置一個div,其中選擇開始,你可以做這樣的事情:

$(document).ready(function() { 
 
    $('.conttext').mouseup(function() { 
 
    var highlight = window.getSelection(); 
 
    var spn = '<span class="highlight">' + highlight + '<div class="mydiv"></div></span>'; 
 
    var text = $('.conttext').text(); 
 
    $('.conttext').html(text.replace(highlight, spn)); 
 
    }); 
 
});
.highlight { 
 
    position: relative; 
 
} 
 
.mydiv { 
 
    position: absolute; 
 
    top: 0; 
 
    left: 0; 
 
    height: 100px; 
 
    width: 100px; 
 
    background-color: gold; 
 
    z-index: -1; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="conttext">How hard can it be to achieve this here and now. Will it be difficult or can it be done with great simplicity</div>

+1

在'mousedown'上,你將不得不刪除高亮範圍,否則你會有錯誤(嘗試在已經選好的文本中選擇幾次)。 – skobaljic

+0

@skobaljic你說得對。這只是基本思想 –

+0

真棒工作,有沒有辦法保持突出顯示的文本?這個div將具有顏色來設置文本的樣式。 –