【问题标题】:jQuery :icontains selector string with wildcard charjQuery:图标包含带有通配符的选择器字符串
【发布时间】:2015-09-25 09:36:15
【问题描述】:

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

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>"

图标,https://gist.github.com/pklauzinski/b6f836f99cfa11100488

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

我这几天一直在寻找方法,希望有人能提供帮助。

【问题讨论】:

  • 你分享icontains选择器吗?我觉得应该是contains。
  • docs 中没有列出icontains。是定制的吗?
  • 您不能使用icontains,因为它使用原始text 来检查indexOf。您需要使用其他方法。
  • 这就是我几天来一直在寻找的结果...

标签: javascript jquery selector wildcard


【解决方案1】:

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

但是如果你们中的任何人想到任何表演 tweeks 请告诉我...欢迎任何建议

谢谢你 Boldewyn =)

【讨论】:

    猜你喜欢
    • 2013-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-07
    • 1970-01-01
    • 2011-01-25
    • 2015-12-22
    • 2016-11-01
    相关资源
    最近更新 更多