使用Jquery的不区分大小写的属性值选择器

我需要获取某个meta标记的content属性的值。

 var someContent = $("meta[name=someKindOfId]").attr("content"); 

我通常是这样做的。 出于商业原因, someKindOfId可能是somekindofid 。 它也可以是其他案例组合。 我不知道。

搜索此元标记的最佳方法是什么? 添加id或其他标识符是不可能的。

您可以像这样使用jqueryfilter函数

 var meta = $('meta[name]').filter(function() { return this.name.toLowerCase() == 'somekindofid'; }); 

基于CSS选择器对属性不敏感

http://jsfiddle.net/nickywaites/mkBvC/

此外,对于不区分大小写的属性* =选择器:

 $("meta[name*=someKindOfId]") 

您可以使用:

 $('meta').filter(function() { return (/somekindofid/i).test($(this).attr('name')); }).attr("content") 

这个怎么样?

您可以重用不区分大小写的jQuery表达式 ,如下面的代码段所示(执行它以查看第一个div如何匹配,而第二个不匹配)。

 $.expr[':'].iAttrContains = function(node, stackIndex, properties){ var args = properties[3].split(',').map(function(arg) { return arg.replace(/^\s*["']|["']\s*$/g, ''); }); if ($(node).attr(args[0])) { //exact match: return $(node).attr(args[0]).toLowerCase() == args[1].toLowerCase(); //if you actually prefer a "contains" behavior: //return -1 !== $(node).attr(args[0]).toLowerCase().indexOf(args[1].toLowerCase()); } }; $("div:iAttrContains('data-name', 'test')").addClass('matched'); 
 div{background:red;} div.matched{background:green;} 
  
First div
Second div