Ответ 1
Вы можете использовать функцию фильтра jquery так:
var meta = $('meta[name]').filter(function() {
return this.name.toLowerCase() == 'somekindofid';
});
Основываясь на CSS-селектор нечувствителен к атрибутам
Мне нужно получить значение атрибута content
определенного тега meta
.
var someContent = $("meta[name=someKindOfId]").attr("content");
как обычно я это делаю. По причинам бизнеса someKindOfId
может быть someKindOfId
. Это могут быть и другие комбинации случаев. Я не знаю.
Каков наилучший способ поиска этого метатега? Добавление идентификатора или другого идентификатора не может быть и речи.
Вы можете использовать функцию фильтра jquery так:
var meta = $('meta[name]').filter(function() {
return this.name.toLowerCase() == 'somekindofid';
});
Основываясь на CSS-селектор нечувствителен к атрибутам
Кроме того, для чувствительного к регистру атрибута * = селектор:
$("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>