Selecione <a> qual href termina com alguma string

669

É possível usar o jQuery para selecionar todos os <a>links cujo href termina com "ABC"?

Por exemplo, se eu quiser encontrar este link <a href="http://server/page.aspx?id=ABC">

Aximili
fonte

Respostas:

1550
   $('a[href$="ABC"]')...

A documentação do seletor pode ser encontrada em http://docs.jquery.com/Selectors

Para atributos:

= is exactly equal
!= is not equal
^= is starts with
$= is ends with
*= is contains
~= is contains word
|= is starts with prefix (i.e., |= "prefix" matches "prefix-...")
tvanfosson
fonte
20
algo mudou recentemente. $ ('[href $ = - abc]') costumava funcionar. Agora ele requer aspas $ ('[href $ = "- abc"]') que não sei quando foi alterado. Talvez sempre devesse exigir citações e funcionasse antes.
gman
12
Observe que "ABC" faz distinção entre maiúsculas e minúsculas! (Apenas passamos algum tempo para descobrir isso ...)
Louis Somers
Como chegar href não contém ABC em jQuery
sf.dev
1
@ sf.dev$('a').filter(function() { return !this.href || !this.href.match(/ABC/); });
tvanfosson
9
Isso funciona com baunilha javascirpt agora. Você pode simplesmente usar document.querySelectorAll('a[href$="ABC"]')para conseguir isso.
k-nut
21
$('a[href$="ABC"]:first').attr('title');

Isso retornará o título do primeiro link que possui uma URL que termina com "ABC".

Cinza
fonte
4
Correção: Que termina com ABC
sparkyspider
Na verdade, há uma pequena diferença. Isso selecionará o primeiro link com o href especificado, o que é útil se você precisar alterar apenas um.
alekwisnia
15
$("a[href*='id=ABC']").addClass('active_jquery_menu');
Sumit
fonte
2
Para futuros visitantes que podem ser ajudados por essa resposta.
Sscirrus
@ Note que sua resposta está correta apenas se os OPs ABCse referirem a um ID.
sscirrus
6
$("a[href*=ABC]").addClass('selected');
Ganesh Anugu
fonte
2

Caso você não queira importar uma grande biblioteca como o jQuery para realizar algo tão trivial, use o método querySelectorAllinterno. Quase todas as seqüências de seletor usadas para jQuery também funcionam com métodos DOM:

const anchors = document.querySelectorAll('a[href$="ABC"]');

Ou, se você souber que existe apenas um elemento correspondente:

const anchor = document.querySelector('a[href$="ABC"]');

Geralmente, você pode omitir as aspas ao redor do valor do atributo se o valor que você está procurando for alfanumérico; por exemplo, aqui, você também pode usar

a[href$=ABC]

mas as cotações são mais flexíveis e geralmente mais confiáveis .

CertainPerformance
fonte