Javascript 忽略突出显示搜索文本的URL

Javascript 忽略突出显示搜索文本的URL,javascript,jquery,css,html,Javascript,Jquery,Css,Html,我有一个javascript,比如: <script type="text/javascript"> function getHighlight() { var MainText = ''; var toSearch = 'store'; MainText = MainText + '<table>'; MainText = MainText + '&l

我有一个javascript,比如:

    <script type="text/javascript">
        function getHighlight() {
            var MainText = '';
            var toSearch = 'store';
            MainText = MainText + '<table>';
            MainText = MainText + '<tr><td><b>Stores</b></td></tr>';
            MainText = MainText + '<tr><td class="clsUrl"><a href="check%20Store%20quality.aspx" style="color:blue; text-decoration:none;" target="_blank">check%20Store%20quality.aspx</a></td></tr>';
            MainText = MainText + '<tr><td><p>Some Description about store...</p><br /></td></tr>';
            MainText = MainText + '</table>';
            $('.dv_searchResult').append(MainText);
            textHightLight($(".dv_searchResult").html(), toSearch, ".dv_searchResult");
       }

    function textHightLight(totText, term, dvCls) {
        var src_str = totText;

        term = term.replace(/(\s+)/, "(<[^>]+>)*$1(<[^>]+>)*");
        var pattern = new RegExp("(" + term + ")", "gi");

        src_str = src_str.replace(pattern, "<mark>$1</mark>");
        src_str = src_str.replace(/(<mark>[^<>]*)((<[^>]+>)+)([^<>]*<\/mark>)/, "$1</mark>$2<mark>$4");

        $(dvCls).html(src_str);
    }
        </script>

函数getHighlight(){
var MainText='';
var-toSearch='store';
MainText=MainText+“”;
MainText=MainText+“存储区”;
MainText=MainText+“”;
MainText=MainText+'关于商店的一些描述…


; MainText=MainText+“”; $('.dv_searchResult').append(MainText); textHightLight($(“.dv_searchResult”).html(),用于搜索“.dv_searchResult”); } 功能文本HightLight(totText、term、dvCls){ var src_str=totText; 术语=术语。替换(/(\s+)/,“(]+>)*$1(]+>)*”; var模式=新的RegExp(“(“+术语+”),“gi”); src_str=src_str.replace(模式,“$1”); src_str=src_str.replace(/([^]*)((]+>)+)([^]*)/,“$1$2$4”); $(dvCls).html(src_str); }
在这里,我将完整的html绑定到一个div
dv_searchResult
,然后突出显示div中的
toSearch
文本。 在某种程度上,它工作得很好。唯一的问题是,如果
toSearch
文本包含url中也存在的任何单词(例如,在上面的文本中,
store
存在于
href=“check%20Store%20quality.aspx”
中),则url也将替换为我用来突出显示该单词的
。 我需要有关如何忽略
clsUrl
类或


请帮忙。

好的,经过大量研究,我为您的问题找到了一个解决方案:

$('input[type=submit]').click( function() {
 var MainText = '';
            var toSearch = 'store';
            MainText = MainText + '<table>';
            MainText = MainText + '<tr><td><b>Stores</b></td></tr>';
            MainText = MainText + '<tr><td class="clsUrl"><a href="check%20Store%20quality.aspx" style="color:blue; text-decoration:none;" target="_blank">check%20Store%20quality.aspx</a></td></tr>';
            MainText = MainText + '<tr><td><p>Some Description about store...</p><br /></td></tr>';
            MainText = MainText + '</table>';
            $('.dv_searchResult').append(MainText);
            textHightLight($(".dv_searchResult"), toSearch, ".dv_searchResult");
            //instead of sending html to textHightLight function just send the whole element  
});
function textHightLight(totText, term, dvCls) {

        a=$(totText).find('a').detach();//Just detach anchor tag from table for time being and keep a copy of it to attach it back on later part.
        var src_str = $(totText).html();//Once done take the html and start searching
        var childNodes = document.body.childNodes;
        term = term.replace(/(\s+)/, "(<[^>]+>)*$1(<[^>]+>)*");
        var pattern = new RegExp("(" + term + ")", "gi");

        src_str = src_str.replace(pattern, "<mark>$1</mark>");

        src_str = src_str.replace(/(<mark>[^<>]*)((<[^>]+>)+)([^<>]*<\/mark>)/, "$1</mark>$2<mark>$4");

        $(dvCls).html(src_str);
    if(a)//Once search is done attach the particular tag back to the place where it was.
         //If you don't want to display it in result just comment this part of code from if
        {
            $('.clsUrl').append(a);
         }//till here
    }

这是

你能提供一把小提琴吗???@GuruprasadRao我已经添加了小提琴。请选中,以便您只想避免使用
a
的href或完整的
a
标记??我希望避免使用完整的“a”标记。但是这两个人中的任何一个都可以。谢谢@Guruprasad Rao…工作得很有魅力。正是我所需要的。:)我的荣幸。我对此更感兴趣,我编辑了我的答案,我觉得这是一个更好的方法。看一看……)快乐编码…)
function textHightLight(totText, term, dvCls) {
        var clas=$(totText).attr('class');
        var elem=$('div.'+clas+' table tr td:not(:has(a))');
        var src_str = "";
        $.each(elem,function(index,value){
            src_str+=$(value).html();
        });
        term = term.replace(/(\s+)/, "(<[^>]+>)*$1(<[^>]+>)*");
        var pattern = new RegExp("(" + term + ")", "gi");

        src_str = src_str.replace(pattern, "<mark>$1</mark>");

        src_str = src_str.replace(/(<mark>[^<>]*)((<[^>]+>)+)([^<>]*<\/mark>)/, "$1</mark>$2<mark>$4");

        $(dvCls).html(src_str);
}