繁体   English   中英

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

[英]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';
});

基于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;} 
 <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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM