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">

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-...")

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”.


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');

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


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 .

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.