这个问题指的是一个类似的问题,这里询问如何将标签应用于选定的文本。该问题已得到回答,但该答案有一个主要缺陷,即如果所选文本存在于文档的其他地方,则<span>
环绕副本,而不是有问题的文本。
我意识到这可能违反了一些 stackoverflow 协议,但我在这里发帖时没有关于如何继续的真正线索。我最好的猜测是以某种方式找到所选文本之前的字符串长度(沿着这些线),但是如何将其合并到替换函数本身......好吧我可以使用推送。任何人?
(我已将解决方案粘贴到下面的上一篇文章(由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;
}
}