我需要获取某个meta
标记的content
属性的值。带Jquery的不区分大小写的属性值选择器
var someContent = $("meta[name=someKindOfId]").attr("content");
是我通常如何做到的。出于商业原因,someKindOfId
可能为somekindofid
。它也可以是其他案例的组合。我不知道。
搜索此元标记的最佳方法是什么?添加一个ID或其他标识符是不可能的。
我需要获取某个meta
标记的content
属性的值。带Jquery的不区分大小写的属性值选择器
var someContent = $("meta[name=someKindOfId]").attr("content");
是我通常如何做到的。出于商业原因,someKindOfId
可能为somekindofid
。它也可以是其他案例的组合。我不知道。
搜索此元标记的最佳方法是什么?添加一个ID或其他标识符是不可能的。
你可以使用jQuery的过滤功能,像这样
var meta = $('meta[name]').filter(function() {
return this.name.toLowerCase() == 'somekindofid';
});
基于
完美。 var someContent = $('meta [name]')。filter(function(){return this.name.toLowerCase()=='somekindofid';})。attr(“content”); – 2011-04-22 13:45:35
生活是多么简单;) – 2011-04-22 14:00:21
我注意到这个解决方案的一些事情Josh是它只会返回1个元标记的内容。我不确定你是否有多个具有相同名称的元标记,但这里是一个更新的小提琴 - http://jsfiddle.net/nickywaites/mkBvC/1/ – 2011-04-22 15:04:02
此外,对于不区分大小写的属性* =选择:
$("meta[name*=someKindOfId]")
您可以使用:
$('meta').filter(function() {
return (/somekindofid/i).test($(this).attr('name'));
}).attr("content")
THISIS像a * =,not =,但这正是我想要的 – 2014-01-31 18:45:33
这个怎么样?
可以重新使用的情况下不敏感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>
看到这个帖子,很不错的解决方案:http://stackoverflow.com/questions/187537/is-there-a-case-insensitive-jquery-contains-selector – Eli 2011-04-22 13:16:32