Select <a> which href ends with some string
Asked Answered
M

5

706

Is it possible using jQuery to select all <a> links which href ends with "ABC"?

For example, if I want to find this link <a href="http://server/page.aspx?id=ABC">

Marilumarilyn answered 20/11, 2008 at 0:23 Comment(0)
L
1637
   $('a[href$="ABC"]')...

Selector documentation can be found at http://docs.jquery.com/Selectors

For attributes:

= 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-...")
Lingle answered 20/11, 2008 at 0:26 Comment(8)
something changed recently. $('[href$=-abc]') used to work. Now it requires quotes $('[href$="-abc"]') I don't know when it changed. Maybe it was always supposed to require quotes and just happened to work before.Outgeneral
Note that "ABC" is case-sensitive! (Just spent quite some time to figure that one out...)Viv
How to get href does not contains ABC in jqueryUndaunted
@Undaunted $('a').filter(function() { return !this.href || !this.href.match(/ABC/); });Lingle
This works with vanilla javascirpt now. You can simply use document.querySelectorAll('a[href$="ABC"]') to achieve this.Gametangium
!= is not a valid attribute selectorBaltimore
@Baltimore the question is about jQuery attribute selectors. It is a valid conditional operation in jQuery.Lingle
if someone is trying to use a var var name = "ABC"; $('a[href$='+name+']')Inerrable
M
24
$('a[href$="ABC"]:first').attr('title');

This will return the title of the first link that has a URL which ends with "ABC".

Massage answered 24/6, 2010 at 21:1 Comment(2)
Correction: Which ends with ABCHeap
Actually, there is a slight difference. This will select the first link with given href, which is useful if you need to change only one.Ghat
D
16
$("a[href*='id=ABC']").addClass('active_jquery_menu');
Doviedow answered 29/2, 2012 at 8:27 Comment(2)
For future visitors who may be helped by that answer.Bywoods
@Doviedow note that your answer is only correct if the OP's ABC happens to refer to an ID.Bywoods
W
6
$("a[href*=ABC]").addClass('selected');
Welby answered 20/9, 2012 at 14:53 Comment(0)
L
5

Just in case you don't want to import a big library like jQuery to accomplish something this trivial, you can use the built-in method querySelectorAll instead. Almost all selector strings used for jQuery work with DOM methods as well:

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

Or, if you know that there's only one matching element:

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

You may generally omit the quotes around the attribute value if the value you're searching for is alphanumeric, eg, here, you could also use

a[href$=ABC]

but quotes are more flexible and generally more reliable.

Lauter answered 21/5, 2019 at 7:57 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.