【发布时间】:2012-05-23 11:09:18
【问题描述】:
这个问题引用了一个类似的问题asked here,关于如何将标签应用于选定的文本。问题已得到解答,但该答案有一个主要缺陷,即如果所选文本存在于文档的其他位置,<span> 将环绕副本,而不是相关文本。
我意识到这可能违反了某些 stackoverflow 协议,但我在这里发帖时并没有真正了解如何继续。我最好的猜测是以某种方式找到所选文本之前的字符串长度(along these lines),但如何将其合并到替换函数本身......好吧我可以使用推送。任何人?
(我已将解决方案粘贴到之前的帖子(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;
}
}
【问题讨论】:
标签: jquery cursor-position string-length replace