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();