[英]Case-insensitive attribute-value selector with Jquery
我需要获取某个meta
标记的content
属性的值。
var someContent = $("meta[name=someKindOfId]").attr("content");
我通常是这样做的。 出于商业原因, someKindOfId
可能是somekindofid
。 它也可能是其他案例组合。 我不知道。
搜索此元标记的最佳方法是什么? 添加id或其他标识符是不可能的。
您可以像这样使用jquery过滤器函数
var meta = $('meta[name]').filter(function() {
return this.name.toLowerCase() == 'somekindofid';
});
此外,对于不区分大小写的属性* =选择器:
$("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;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> <div data-name="This is a test">First div</div> <div data-name="This is a div">Second div</div>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.