Wybierz <a>, który href kończy się jakimś łańcuchem

669

Czy jest możliwe użycie jQuery do wybrania wszystkich <a>łączy, których href kończy się na „ABC”?

Na przykład, jeśli chcę znaleźć ten link <a href="http://server/page.aspx?id=ABC">

Aximili
źródło

Odpowiedzi:

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

Dokumentację selektora można znaleźć na stronie http://docs.jquery.com/Selectors

W przypadku atrybutów:

= 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
źródło
20
coś się ostatnio zmieniło. $ ('[href $ = - abc]') używane do pracy. Teraz wymaga cudzysłowu $ ('[href $ = "- abc"]') Nie wiem kiedy to się zmieniło. Może zawsze miało to wymagać cytatów i po prostu działało wcześniej.
gman
12
Pamiętaj, że „ABC” rozróżnia małe i wielkie litery! (Spędziłem sporo czasu, żeby to rozgryźć ...)
Louis Somers
Jak zdobyć href nie zawiera ABC w jquery
sf.dev
1
@ sf.dev$('a').filter(function() { return !this.href || !this.href.match(/ABC/); });
tvanfosson
9
Działa to teraz z waniliowym javascirpt. Możesz tego po prostu użyć document.querySelectorAll('a[href$="ABC"]').
k-nut
21
$('a[href$="ABC"]:first').attr('title');

Zwróci tytuł pierwszego linku, który ma adres URL zakończony „ABC”.

Popiół
źródło
4
Korekta: która kończy się na ABC
sparkyspider
W rzeczywistości istnieje niewielka różnica. Spowoduje to wybranie pierwszego linku z danym href, co jest przydatne, jeśli trzeba zmienić tylko jeden.
alekwisnia
15
$("a[href*='id=ABC']").addClass('active_jquery_menu');
Sumit
źródło
2
Dla przyszłych gości, którym może pomóc ta odpowiedź.
sscirrus 24.04.2013
@ Zwróć uwagę, że twoja odpowiedź jest poprawna tylko wtedy, gdy PO ABCodnosi się do identyfikatora.
sscirrus 24.04.13
6
$("a[href*=ABC]").addClass('selected');
Ganesh Anugu
źródło
2

Na wypadek gdybyś nie chciał zaimportować dużej biblioteki, takiej jak jQuery, aby osiągnąć coś tak trywialnego, możesz querySelectorAllzamiast tego użyć wbudowanej metody . Prawie wszystkie ciągi selektora używane do jQuery działają również z metodami DOM:

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

Lub jeśli wiesz, że istnieje tylko jeden pasujący element:

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

Zazwyczaj możesz pominąć cudzysłowy wokół wartości atrybutu, jeśli szukana wartość jest alfanumeryczna, np. Tutaj możesz również użyć

a[href$=ABC]

ale cytaty są bardziej elastyczne i ogólnie bardziej wiarygodne .

CertainPerformance
źródło