【发布时间】:2015-10-07 14:39:50
【问题描述】:
此问题建立在How to wrap word into span on user click in javascript 中提供的答案之上。
在我的示例中,用户可以双击任何单词以将其包装在 span 元素中,但是 b/c 这是基于空格分割的,如果单词后面跟着标点符号,它将不起作用。
HTML:
<div class="color-coding">
<span class="orange color-coding">Hello world this is some text.</span>
<br>
<span class="orange color-coding">Here is some more!</span>
</div>
JS:
jQuery(document).ready(function($) {
$('.color-coding').dblclick(function(e) {
var range = window.getSelection() || document.getSelection() || document.selection.createRange();
var sword = $.trim(range.toString());
if(sword.length)
{
var newWord = "<span class='highlight'>"+sword+"</span>";
$(this).each(function(){
$(this).html(function( _, html ) {
return html.split(/\s+/).map(function( word ) {
return word === sword ? newWord : word;
}).join(' ');
});
});
}
range.collapse();
e.stopPropagation();
});
});
我可以为拆分添加标点符号检测,但这当然会删除标点符号,我需要保留它,因此使用以下内容无法满足我的需求:
html.split(/\s+|[.,-\/#!$%\^&\*;:{}=\-_`~()]/)
【问题讨论】:
标签: javascript jquery regex