包含带有通配符字符的选择器字符串

jQuery :icontains selector string with wildcard char

本文关键字:选择器 字符串 字符 通配符 包含带      更新时间:2023-09-26

我使用下面的代码来返回包含特定字符串的所有元素:

specString="a b";
a.schHits=$('*:icontains("'+specString+'")');
html exempel:

<body>
 <label>a b</label>
 <label>a_b</label>
</body>

结果选定元素:

"<label>a b</label>"

现在的问题:是否有一种方法来使用图标包含(或在速度相等)函数/选择器通配符字符?像这样的例子:

specString="a*b"; or specString="a%b";
a.schHits=$('*:icontains("'+specString+'")');
html exempel:

<body>
 <label>a b</label>
 <label>a_b</label>
</body>

结果选定元素:

"<label>a b</label>","<label>a_b</label>"

icontains https://gist.github.com/pklauzinski/b6f836f99cfa11100488

$.expr[':'].icontains = $.expr.createPseudo(function(text) {
    return function(e) {
        return $(e).text().toUpperCase().indexOf(text.toUpperCase()) >= 0;
    };
});

我一直在寻找一个方法,希望有人能帮助我。

在Boldewyn给了我他的评论后我想到了这个,它有效…

$.expr[":"].xcontains=$.expr.createPseudo(function(arg){
    arg=arg.replace(/(['.'+'?'^'$''])/g,''$1').replace(/[*%]/g,'.*');
    var prex=new RegExp(arg,'i');
    return function(elem){
        return jQuery(elem).text().search(prex)>=0;
    };
});

但是如果你们中有人认为有任何表现两周请告诉我…欢迎提出任何建议