2011-04-22 59 views
13

我需要获取某个meta标记的content属性的值。带Jquery的不区分大小写的属性值选择器

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

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

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

+0

看到这个帖子,很不错的解决方案:http://stackoverflow.com/questions/187537/is-there-a-case-insensitive-jquery-contains-selector – Eli 2011-04-22 13:16:32

回答

27

你可以使用jQuery的过滤功能,像这样

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

CSS selector case insensitive for attributes

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

+1

完美。 var someContent = $('meta [name]')。filter(function(){return this.name.toLowerCase()=='somekindofid';})。attr(“content”); – 2011-04-22 13:45:35

+0

生活是多么简单;) – 2011-04-22 14:00:21

+0

我注意到这个解决方案的一些事情Josh是它只会返回1个元标记的内容。我不确定你是否有多个具有相同名称的元标记,但这里是一个更新的小提琴 - http://jsfiddle.net/nickywaites/mkBvC/1/ – 2011-04-22 15:04:02

5

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

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

您可以使用:

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

THISIS像a * =,not =,但这正是我想要的 – 2014-01-31 18:45:33

0

这个怎么样?

可以重新使用的情况下不敏感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>

相关问题