Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 不区分大小写的jQuery属性选择器_Javascript_Jquery_Jquery Selectors - Fatal编程技术网

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

Javascript 不区分大小写的jQuery属性选择器,javascript,jquery,jquery-selectors,Javascript,Jquery,Jquery Selectors,我使用属性包含选择器执行以下操作 $(“输入[name*='man']”)css(“背景色:黑色”); 这适用于第一个输入,但不适用于第二个输入,因为“Man”有大写“M” 如何使$(“输入[name*='man']”)成为不区分大小写的选择器?您可以始终使用.filter(): 这里的关键部分是toLowerCase(),它将name属性小写,允许您测试它是否包含man var control = $('input').filter(function() { return /*RE

我使用属性包含选择器执行以下操作


$(“输入[name*='man']”)css(“背景色:黑色”);
这适用于第一个输入,但不适用于第二个输入,因为“Man”有大写“M


如何使
$(“输入[name*='man']”)成为不区分大小写的选择器?

您可以始终使用
.filter()

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

var control = $('input').filter(function() {
    return /*REGEX_VALUE*/i.test($(this).attr('id'));
});
*REGEX_VALUE*-要查找的值


我最终使用正则表达式验证属性“ID”是否满足。。。如果您想找到某个或多个匹配值,区分大小写或不区分大小写,或某个范围内的值,则regex更为灵活…

我只是能够完全忽略jQuery的区分大小写,以使用下面的代码实现我想要的功能

$.expr[":"].contains = $.expr.createPseudo(function(arg) {
  return function( elem ) {
    return $(elem).text().toUpperCase().indexOf(arg.toUpperCase()) >= 0;
  };
});
您可以使用此链接根据jQuery版本查找代码,


还有一篇文章提到jQuery有很多好处:

最简单的方法是在选择器的regex部分中添加一个不区分大小写的标志“i”:

所以不是

$(“输入[name*='man'])

你可以

$(“输入[name*='man'i]”)


JS fiddle:

这对我使用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;
    }

可能重复的可能重复的仅供参考:在Chrome 53中工作,但不是IE 11,很有趣,但不是ideal@Stan这让我很震惊。我在Chrome和IE11中看到了不同的结果,我认为这不可能;肯定还有别的区别。然后我看到了你的评论。我认为jQuery的全部要点是浏览器独立性。当涉及到选择器语法等内部构件时,我尤其希望这是真的。关于这种差异存在的原因或者是否/在哪里有记录有什么想法?@BlueMonkMN已经一年了,我还没有重新测试过,但我猜是IE的正则表达式处理造成了这种差异。这个解决方案看起来很简单,但在我的例子中给出了:jquery.min.js:2未捕获错误:语法错误,无法识别的表达式:[name*='fund'I]还有,请参阅有关属性选择器的MDN文档
$.expr[":"].contains = $.expr.createPseudo(function(arg) {
  return function( elem ) {
    return $(elem).text().toUpperCase().indexOf(arg.toUpperCase()) >= 0;
  };
});
    // 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;
    }