Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 修改代码以包装整个单词&;使其不区分大小写 函数过滤器搜索词(){ var query=$(“#searchquery”).val(); go(查询); 函数go(查询){ $(“.search result p:contains(“+query+”).html(函数(\ux,html){ 返回html.replace(查询,$&,'gi'); }); $(“.search result h2 a:包含(“+query+”).html(函数(\ux,html){ 返回html.replace(查询,$&,'gi'); }); console.log(查询); } }_Javascript_Jquery - Fatal编程技术网

Javascript 修改代码以包装整个单词&;使其不区分大小写 函数过滤器搜索词(){ var query=$(“#searchquery”).val(); go(查询); 函数go(查询){ $(“.search result p:contains(“+query+”).html(函数(\ux,html){ 返回html.replace(查询,$&,'gi'); }); $(“.search result h2 a:包含(“+query+”).html(函数(\ux,html){ 返回html.replace(查询,$&,'gi'); }); console.log(查询); } }

Javascript 修改代码以包装整个单词&;使其不区分大小写 函数过滤器搜索词(){ var query=$(“#searchquery”).val(); go(查询); 函数go(查询){ $(“.search result p:contains(“+query+”).html(函数(\ux,html){ 返回html.replace(查询,$&,'gi'); }); $(“.search result h2 a:包含(“+query+”).html(函数(\ux,html){ 返回html.replace(查询,$&,'gi'); }); console.log(查询); } },javascript,jquery,Javascript,Jquery,这是我的尝试。它可以添加跨度,但仅添加到包含字符串的单词或部分单词。假设字符串是Pie,它将跨度添加到所有“Pie”并在Piechart中包装“Pie”,但是我希望它包装所有Piechart,并且不带大写字母的Pie 有人可以修改我的代码来帮助我吗 谢谢 我尝试使用正则表达式“gi”似乎不起作用:/ 更新 快到了 function filterSearchWords() { var query = $("#searchquery").val(); go(query);

这是我的尝试。它可以添加跨度,但仅添加到包含字符串的单词或部分单词。假设字符串是Pie,它将跨度添加到所有“Pie”并在Piechart中包装“Pie”,但是我希望它包装所有Piechart,并且不带大写字母的Pie

有人可以修改我的代码来帮助我吗

谢谢

我尝试使用正则表达式“gi”似乎不起作用:/

更新 快到了

function filterSearchWords() {
    var query = $("#searchquery").val();

    go(query);
    function go(query) {
        $(".search-result p:contains(" + query + ")").html(function (_, html) {
            return html.replace(query, "<span class='search-enlight'>$&</span>", 'gi');
        });
        $(".search-result h2 a:contains(" + query + ")").html(function (_, html) {
            return html.replace(query, "<span class='search-enlight'>$&</span>", 'gi');
        });
        console.log(query);
    }
}
函数过滤器搜索词(){
var query=$(“#searchquery”).val();
go(查询);
函数go(查询){
$.extend($.expr[':']{
“containsi”:函数(元素、i、匹配、数组){
return(elem.textContent | | | elem.innerText | |“”).toLowerCase()
.indexOf((匹配[3]| |“”).toLowerCase())>=0;
}
});
$(“.search result p:containsi(“+query+”)).html(函数(){
返回html.replace(新的RegExp(查询,“gi”),“$&”);
});
$(“.search result h2 a:containsi(“+query+”)).html(函数(\ux,html){
返回html.replace(新的RegExp(查询,“gi”),“$&”);
});
console.log(查询);
}
}

这是我的最后一个问题。我已成功删除区分大小写的部分,但它与整个单词不匹配。

关于第三个标志参数的注释来自:

注意:flags参数在v8 Core(Chrome和Node.js)中不起作用

您应该改用对象:

function filterSearchWords() {
    var query = $("#searchquery").val();

    go(query);
    function go(query) {
        $.extend($.expr[':'], {
            'containsi': function (elem, i, match, array) {
                return (elem.textContent || elem.innerText || '').toLowerCase()
                .indexOf((match[3] || "").toLowerCase()) >= 0;
            }
        });

        $(".search-result p:containsi(" + query + ")").html(function (_, html) {
            return html.replace(new RegExp(query,  "gi"), "<span class='search-enlight'>$&</span>");
        });
        $(".search-result h2 a:containsi(" + query + ")").html(function (_, html) {
            return html.replace(new RegExp(query, "gi"), "<span class='search-enlight'>$&</span>");
        });
        console.log(query);
    }
}
返回html.replace(新的RegExp(查询,“gi”),“$&”);

现在它可以工作了。见第一篇文章。还有一个问题/
return html.replace(new RegExp(query, "gi"), "<span class='search-enlight'>$&</span>");