Hier noch meine Lösung:
Es gibt nun eine jQuery Funktion, mit der ich alle Textnodes, welche den Suchbegriff enthalten, als Array erhalte:
jQuery.fn.egrep = function(term) {
var out = [];
var textNodes = function(n) {
if (n.nodeType == 3) {
var t = typeof term == 'string' ?
n.nodeValue.toLowerCase().indexOf(term.toLowerCase()) != -1 :
term.test(n.nodeValue);
if (t) {
out.push(n.parentNode);
}
}
else {
jQuery.each(n.childNodes, function(a, b) {
textNodes(b);
});
}
};
this.each(function() {
textNodes(this);
});
return out;
};
Hier wird die Funktion aufgerufen und bei den jeweiligen Textnodes mach ich dann ein Replace, um den Suchbegriff entsprechend zu markieren bzw mit einem Tag zu versehen:
var searchTermArray = searchTerm.split(",");
for (var i = 0; i < searchTermArray.length; ++i) {
var n = $("#body, #stage").egrep(searchTermArray[i]);
for (var j = 0; j < n.length; ++j) {
void($(n[j]).html( $(n[j]).html().replace(new RegExp("(" + searchTermArray[i] + ")","gi"), '<em class="search-term">$1</em>') ) );
}
}
Danke nochmal an ChrisB
Baba Hanu