用于不区分大小写的字符串的搜索元素

时间:2013-04-19 18:43:06

标签: jquery string lowercase

让我假装我有这些跨度:

<span>c2alerts</span>
<span>C2alerts</span>
<span>c2Alerts</span>
<span>c2aLerts</span>
<span>c2alErts</span>
<span>c2aleRts</span>
<span>c2alerTs</span>
<span>c2alertS</span>

我想找到每个'c2alerts' 我很熟悉搜索特定的字符串:

$("span:contains('c2alerts')").addClass('yellow');

但是如何在不重复编码的情况下搜索所有这些内容? 我知道我可以使用toLowerCase()函数,但我不确定在哪里应用它...

我想保持跨度的原始格式,因此将它们转换为小写,然后搜索将不是一个可行的选项。

有什么建议吗?

3 个答案:

答案 0 :(得分:2)

您必须使用.filter()

$('span').filter(function() {
    return $(this).text().toLowerCase().indexOf('c2alerts') !== -1;
}).addClass('yellow');

答案 1 :(得分:1)

您可以推出自己的contains自定义行为

jQuery.expr[":"].contains_ignoreCase = jQuery.expr.createPseudo(function(arg) {
  return function( elem ) {
     return jQuery(elem).text().toLowerCase().indexOf(arg.toLowerCase()) >= 0;
  };
});


$("span:contains_ignoreCase('c2alerts')").addClass('yellow');

答案 2 :(得分:0)

我认为最简单的方法是:

$("span").each(function(){
    if($(this).text().toLowerCase() == "c2alerts") {
        $(this).addClass("yellow");
    }
});