Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.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
Jquery 属性的CSS选择器不区分大小写_Jquery_Jquery Selectors_Css Selectors_Case Insensitive_Selenium Webdriver - Fatal编程技术网

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

Jquery 属性的CSS选择器不区分大小写,jquery,jquery-selectors,css-selectors,case-insensitive,selenium-webdriver,Jquery,Jquery Selectors,Css Selectors,Case Insensitive,Selenium Webdriver,如果我有一个HTML元素,css选择器需要区分大小写: input[value='Search']匹配 输入[value='search']不匹配 我需要一个不区分大小写的解决方案。我使用的是Selenium 2和Jquery,因此欢迎对这两种方法进行解答。它现在存在于CSS4中,请参阅 否则,对于jQuery,您可以使用 $(':input[name]').filter(function() { return this.value.toLowerCase() == 'search'; }

如果我有一个HTML元素
,css选择器需要区分大小写:

input[value='Search']
匹配

输入[value='search']
不匹配


我需要一个不区分大小写的解决方案。我使用的是Selenium 2Jquery,因此欢迎对这两种方法进行解答。

它现在存在于CSS4中,请参阅

否则,对于jQuery,您可以使用

$(':input[name]').filter(function() {
   return this.value.toLowerCase() == 'search';
});

你也可以做一个自定义选择器

$.expr[':'].valueCaseInsensitive = function(node, stackIndex, properties){
     return node.value.toLowerCase() == properties[3];
};

var searchInputs = $(':input:valueCaseInsensitive("Search")');

如果只使用一次自定义选择器,可能会有点过分,但是如果您需要在应用程序中多次使用它,这可能是一个好主意

更新 是否可以为任何属性使用这种自定义选择器

当然,请查看以下示例。它有点复杂(语法如
:input[value:toLowerCase=“search”]
可能更直观),但它可以工作:)

您可能可以使用
eval()
使该字符串成为一个数组,但我发现这样做更舒服(而且您不会意外地执行放置在选择器中的任何代码)

相反,我在
分隔符上拆分字符串,然后剥离空白,
每个数组成员的任一侧。请注意,引号内的
不会按字面意思处理。没有理由逐字逐句地要求一个人,但您可以始终针对这种可能性编写代码。我会让你决定的


我认为没有最好的浏览器支持,因此您可以明确地迭代
args
数组或。

您不能单独使用选择器,请尝试:

$('input').filter(function() {
    return $(this).attr('value').toLowerCase() == 'search';
});
增加了对it的支持:

input[value='search' i]
最后的“我”才是关键

2016年年中开始广泛采用:Chrome(从v49开始)、Firefox(从v47开始?),Opera和其他一些公司都有。由于使用闪烁,因此不使用闪烁和边缘。看

支持:
版本:Chrome>=49.0,Firefox(Gecko)>=47.0,Safari>=9

可能是重复的问题?您也可以在那里使用
val()
。而且,他们似乎想要精确匹配,而不是
indexOf()
:)非常正确,但我使用了
attr()
来显示您也可以将其用于其他属性。已更新为完全匹配。自定义选择器与我需要的完全相同。你能解释一下属性[3]是什么吗?@Alp
properties[3]
是作为参数传递给自定义选择器的字符串(其他索引是分类元数据)。@alex任何属性都可以有这种自定义选择器吗?所以所有属性,如名称、值、类等都不区分大小写?@Alp是的,但它有点混乱。让我更新一下:)更好的返回语句是returntypeof$(node).attr(args[0])!='未定义的“&&$(节点).attr(args[0]).toLowerCase()==args[1]。toLowerCase()@Miscreant:有关如何在浏览器中工作的信息,请参阅。Chrome在49.0版(2016年3月发布)中添加了对该功能的支持。Firefox将在47.0版中添加支持(计划于2016年6月发布)。来源:我可以确认它与纯铬版本49.0.2623.108一起工作。
input[value='search' i]
input[value='Search'] matches
input[value='search' i] Also matches in latest browsers