Нечувствительный к регистру селектор значения атрибута с Jquery - PullRequest
14 голосов
/ 22 апреля 2011

Мне нужно получить значение атрибута content определенного тега meta.

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

так я обычно делаю. По деловым причинам someKindOfId может быть somekindofid. Это могут быть и другие комбинации случаев. Я не знаю.

Как лучше всего искать этот метатег? Добавление идентификатора или другого идентификатора исключено.

Ответы [ 3 ]

27 голосов
/ 22 апреля 2011

Вы можете использовать функцию фильтра jquery следующим образом:

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

На основе регистр CSS нечувствителен к атрибутам

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

5 голосов
/ 22 апреля 2011

Кроме того, для нечувствительного к регистру атрибута * = селектор:

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

Вы можете использовать:

$('meta').filter(function() {
       return (/somekindofid/i).test($(this).attr('name'));
}).attr("content")
0 голосов
/ 20 июля 2015

Как насчет этого?

Вы можете использовать регистронезависимое выражение 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>
...