I fiddled some RegEx which allows HTML tags at the position of whitespace chars:
<div id="test">this is <a href="#">my</a> text that needs highlighting</div>
JavaScript:
var src_str = $("#test").html();
var term = "my text";
term = term.replace(/(\s+)/,"(<[^>]+>)*$1(<[^>]+>)*");
var pattern = new RegExp("("+term+")", "i");
src_str = src_str.replace(pattern, "<mark>$1</mark>");
src_str = src_str.replace(/(<mark>[^<>]*)((<[^>]+>)+)([^<>]*<\/mark>)/,"$1</mark>$2<mark>$4");
$("#test").html(src_str);
Try it here: http://jsfiddle.net/UPs3V/