Como eu uso jQuery para ignorar caso quando a seleção?
-
03-07-2019 - |
Pergunta
Atualmente estou tentando desativar um link usando o seguinte seletor jQuery:
$("a[href$=/sites/abcd/sectors]").removeAttr("href");
O problema é que às vezes a href nem sempre pode ser menor caso na página. Quando isso acontece, o selector de partidas não mais.
Alguém sabe como contornar isso? Posso mudar o comportamento desta vez para ignorar caso?
Solução
Eu corri para isso mesmo. Troquei a lógica um pouco para me permitir compará-lo sem caso. Ela exige um pouco mais de trabalho, mas pelo menos ele funciona.
$('a').each(function(i,n) {
var href = $(n).attr("href");
href = href.toLowerCase();
if (href.endsWith('/sites/abcd/sectors'))
$(n).removeAttr('href');
});
Você tem que descobrir sua própria lógica endsWith
.
Outras dicas
jQuery foi construído para ser estendido. Você pode corrigi-lo ou adicionar seu próprio tipo de seletor de maiúsculas e minúsculas.
Rick Strahl: Selector Usando jQuery para procurar conteúdo e criação de filtros personalizados
Você pode usar a função "é" em jQuery. Não é sensível a maiúsculas.
$("a").each(function() {
if ($(this).is("a[href$=/sites/abcd/sectors]")) {
$(this).removeAttr('href');
}
})
Em primeiro lugar este é não é válido expressão, uma vez que contém \
,
Se você quiser usar qualquer um dos meta-caracteres (como !"#$%&'()*+,./:;<=>?@[\]^``{|}~
) como
a parte literal de um nome, você deve escapar da personagem com duas barras invertidas:. \\
Src: http://api.jquery.com/category/selectors/
para que você deve escapar da /
para \\/
para que a sua expressão será $("a[href$=\\/sites\\/abcd\\/sectors]").removeAttr("href");