使用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选择器对属性不敏感
此外,对于不区分大小写的属性* =选择器:
$("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