是否有一个不区分大小写的版本:包含 jQuery选择器,还是应该通过循环遍历所有元素并将它们的.text()与我的字符串进行比较来手动完成工作?
如果我有一个HTML元素<input type="submit" value="Search" />
,则css选择器需要区分大小写:
input[value='Search']
火柴
input[value='search']
不匹配
我需要一个解决方案,其中不区分大小写的方法也适用.我正在使用Selenium 2和Jquery,所以欢迎两者的答案.
jquery case-insensitive css-selectors jquery-selectors selenium-webdriver
我正在尝试基于我发现的几个不同的教程,为jQuery添加一个自定义伪选择器,目前正在使用v1.8.0.我基本上试图实现不区分大小写:包含选择器.
我目前的化身看起来像这样
$.expr[':'].icontains = function(obj, index, meta, stack){
return (obj.textContent || obj.innerText || jQuery(obj).text() || '').toLowerCase().indexOf(meta[3].toLowerCase()) >= 0;
};
Run Code Online (Sandbox Code Playgroud)
来自这篇文章.看起来选择器正在初始化,但是当jQuery调用函数时,只定义了obj参数.其余3个参数未定义.
当我将参数记录到控制台时,我看到一个包含2个项目的数组,第一个项目是我的选择器在:icontains调用之前返回的DOM对象,第二个项目是未定义的.
有没有人知道为什么会发生这种情况?
我有一个select
包含很少自定义属性的元素,我用它来动态验证它并显示相应的消息.属性的名称是camel cased,如
<select validationMessage="Must select something" ... >...
Run Code Online (Sandbox Code Playgroud)
问题是在早于1.6的jQuery版本中.attr()
似乎区分大小写.更有问题的是,它不会获取原始的套接字属性.这在Firefox中的Firefox中也是如此,但在Internet Explorer中按预期工作(不应该不区分大小写).任何套管(原始套管除外)都有效,这也很有趣.
这是这个问题的JSFiddle示例.您可以在左侧更改jQuery lib版本并点击"运行"以检查它与其他版本的工作方式.
我如何缓解这个问题?