4 Highlights arbitrary terms.
5 <http://johannburkard.de/blog/programming/javascript/highlight-javascript-text-higlighting-jquery-plugin.html>
9 <http://johannburkard.de>
13 jQuery.highlight = document.body.createTextRange ?
16 Version for IE using TextRanges.
19 var r = document.body.createTextRange();
20 r.moveToElementText(node);
21 for (var i = 0; r.findText(te); i++) {
22 r.pasteHTML('<span class="highlight">' + r.text + '<\/span>');
30 (Complicated) version for Mozilla and Opera using span tags.
33 var pos, skip, spannode, middlebit, endbit, middleclone;
35 if (node.nodeType == 3) {
36 pos = node.data.toUpperCase().indexOf(te);
38 spannode = document.createElement('span');
39 spannode.className = 'highlight';
40 middlebit = node.splitText(pos);
41 endbit = middlebit.splitText(te.length);
42 middleclone = middlebit.cloneNode(true);
43 spannode.appendChild(middleclone);
44 middlebit.parentNode.replaceChild(spannode, middlebit);
48 else if (node.nodeType == 1 && node.childNodes && !/(script|style)/i.test(node.tagName)) {
49 for (var i = 0; i < node.childNodes.length; ++i) {
50 i += $.highlight(node.childNodes[i], te);
59 jQuery.fn.removeHighlight = function() {
60 return this.find("span.highlight").each(function() {
61 this.parentNode.replaceChild(this.firstChild, this).normalize();