不区分大小写的 jQuery 属性选择器

Case insensitive jQuery attribute selector

本文关键字:属性 选择器 jQuery 大小写 不区      更新时间:2023-09-26

我正在使用属性包含选择器 $('[属性*=值]')

<input name="man-news">
<input name="milkMan">
<script>    
    $( "input[name*='man']").css("background-color:black");
</script>

这适用于第一个输入,但不适用于第二个输入,因为"Man"有一个大写的"M"

如何使$( "input[name*='man']")选择器不区分大小写?

最简单的方法是在选择器的正则表达式部分中添加一个不区分大小写的标志'i':

所以而不是

$( "input[name*='man']")

你可以做

$( "input[name*='man' i]")

JS小提琴:https://jsfiddle.net/uoxvwxd1/3/

您可以随时使用 .filter()

var mans = $('input').filter(function() {
    return $(this).attr('name').toLowerCase().indexOf('man') > -1;
});
mans.css('background-color', 'black');

这里的关键部分是toLowerCase(),它使 name 属性小写,允许您测试它是否包含 man .

var control = $('input').filter(function() {
    return /*REGEX_VALUE*/i.test($(this).attr('id'));
});

*REGEX_VALUE* - 您要查找的值

我最终使用正则表达式来验证属性"ID"是否满足...如果您想查找某个匹配值或值,区分大小写或不区分大小写或特定范围的值,正则表达式会更加灵活......

我只能完全忽略jQuery的大小写敏感性,以使用以下代码实现我想要的,

$.expr[":"].contains = $.expr.createPseudo(function(arg) {
  return function( elem ) {
    return $(elem).text().toUpperCase().indexOf(arg.toUpperCase()) >= 0;
  };
});

您可以使用此链接根据您的 jQuery 版本查找代码,https://css-tricks.com/snippets/jquery/make-jquery-contains-case-insensitive/

还有一篇文章,它用jQuery做了许多好事:http://www.ultechspot.com/jquery/using-jquery-search-html-text-and-show-or-hide-accordingly

这适用于我使用 jQuery 以及如果我正在将项目添加到表中

    // check if item already exists in table
    var inputValue = $('#input').val(); // input
    var checkitem = $('#exampleTable td.value div.editable').filter(function() {
        //check each table's editable div matches the input value in lowercase 
        if ($(this).text().toLowerCase() === inputValue.toLowerCase()) {
            itemexists = true; 
        }   
    });
    if (itemexists) {
        alert("item exists in the table");
        return;
    }