この質問は、選択したテキストにタグを適用する方法についてここで尋ねられた同様の質問を参照しています。質問には回答がありましたが、その回答には 1 つの大きな欠陥がありました。それは、選択された同じテキストがドキュメント内の別の場所に存在する場合、<span>
問題のテキストではなく、重複をラップすることです。
これはおそらくいくつかのstackoverflowプロトコルに反していることに気づきましたが、続行する方法についての本当の手がかりなしにここに投稿しています. 私の最善の推測は、選択したテキストの前の文字列の長さをどうにかして見つけることです(これらの行に沿ったもの)が、それを置換関数自体に組み込む方法...まあ、プッシュを使用できます。誰?
(以前の投稿 (by mathias-bynens ) の解決策を以下に貼り付けました。)
$("p").live("mouseup",function() {
selection = getSelectedText();
if(selection.length >= 3) {
var spn = '<span class="selected">' + selection + '</span>';
$(this).text($(this).html().replace(selection, spn));
}
});
//Grab selected text
function getSelectedText(){
if(window.getSelection){
return window.getSelection().toString();
}
else if(document.getSelection){
return document.getSelection();
}
else if(document.selection){
return document.selection.createRange().text;
}
}