JSFiddle - React, Tailwind, and code Playground
HTML
<div id="content">Many repeated words Many repeated words Many repeated words Many repeated words Many repeated words Many repeated words </div>
CSS
.highlight {
background:#ff0022;
}
JavaScript
function getSelectedText() {
var txt = '';
if (window.getSelection) {
txt = window.getSelection();
} else if (document.getSelection) {
txt = document.getSelection();
} else if (document.selection) {
txt = document.selection.createRange().text;
}
return txt;
}
function deselectText() {
if (window.getSelection) {
window.getSelection().removeAllRanges();
} else if (document.getSelection) {
txt = document.getSelection().removeAllRanges();
} else if (document.selection) {
txt = document.selection.empty;
}
}
$(document).ready(function() {
$('#content').dblclick(function() {
$('.highlight').removeClass('highlight');
var t = getSelectedText();
var regex = new RegExp(t, "gi");
this.innerHTML = this.innerHTML.replace(regex, function(matched) {return "<span class=\"highlight \">" + matched + "</span>";});
deselectText();
});
});