2

假设我有这些跨度:

<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() 函数,但我不确定我会在哪里应用它......

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

有什么建议么?

4

3 回答 3

2

你必须使用.filter()

$('span').filter(function() {
    return $(this).text().toLowerCase().indexOf('c2alerts') !== -1;
}).addClass('yellow');
于 2013-04-19T18:44:24.110 回答
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');
于 2013-04-19T18:46:19.187 回答
0

我认为最简单的方法是:

$("span").each(function(){
    if($(this).text().toLowerCase() == "c2alerts") {
        $(this).addClass("yellow");
    }
});
于 2013-04-19T18:53:11.147 回答