我使用下面的代码来获取包含特定字符串的所有元素:
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;
};
});
我一直在寻找一种方式,并希望有人会帮助。
答案 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 =)