jQuery:icontains带有通配符char的选择器字符串

时间:2015-09-25 09:36:15

标签: javascript jquery selector wildcard

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

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

html例如:

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

产生的选定元素:

"<label>a b</label>"

现在问的问题是:有没有办法使用带有通配符字符的icontains(或速度相等)函数/选择器?喜欢这个例子:

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

html例如:

<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;
    };
});

我一直在寻找一种方式,并希望有人会帮助。

1 个答案:

答案 0 :(得分: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;
    };
});

但如果您有任何人想到任何任何性能的推文,请告诉我......欢迎任何建议

你的Boldewyn =)