3

このページでは、テキスト内の単語を検索し、すべての出現箇所を強調表示します。たとえば、「フロント エンド」を検索する場合は、「フロント エンド」のすべての出現箇所を強調表示する必要があります。以下のコードではそれらを強調表示していますが、出現箇所の大文字も置き換えられています。直せますか?ここに私のコードがあります:

これにより、jQuery には大文字と小文字が区別されません

$.expr[":"].contains = $.expr.createPseudo(function(arg) {
    return function( elem ) {
        return $(elem).text().toUpperCase().indexOf(arg.toUpperCase()) >= 0;
    };
});

これは、置換によって強調表示されるコードです

$('input[value="Zoeken"]').click(function(){
    $('.section').html(function (i, str) {
        yellowspan = new RegExp('<span style="background-color: #FFFF00">' ,"g"); 
        empty = "";
        return str.replace(yellowspan, empty);
    });

    $('.section').html(function (i, str) {
        endspan = new RegExp("</span>" ,"g"); 
        empty = "";
        return str.replace(endspan, empty);
    });

    var string = $('input[placeholder="Zoeken"]').val();                    
    $('.section:contains("' + string + '")').each(function(index, value){
        $(this).html(function (i, str) {
            simpletext = new RegExp(string,"gi"); 
            yellowtext = "<span style='background-color: #FFFF00'>" + string + "</span>";
            return str.replace(simpletext, yellowtext);
        });
    });
});

問題のあるコードは最後のhtml()関数にあります

4

1 に答える 1

7

交換

simpletext = new RegExp(string,"gi"); 
yellowtext = "<span style='background-color: #FFFF00'>" + string + "</span>";
return str.replace(simpletext, yellowtext);

simpletext = new RegExp("(" + string + ")","gi"); 
return str.replace(simpletext, "<span style='background-color: #FFFF00'>$1</span>")

の余分な括弧はnew Regexp()、見つかった値をキャプチャします。$1 instr.replaceはキャプチャされた値を挿入します

于 2013-09-27T17:43:25.733 に答える