选择以某个字符串结尾的 href 属性值为 <a> 元素。

705

使用jQuery是否可以选择所有href以"ABC"结尾的<a>链接?

例如,如果我想找到这个链接<a href="http://server/page.aspx?id=ABC">

5个回答

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

选择器文档可以在http://docs.jquery.com/Selectors找到。

对于属性:

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

22
最近有些变化。$('[href$=-abc]')过去是可行的,现在需要加引号$('[href$="-abc"]')。我不知道这个更改是什么时候发生的,也许一直需要加引号而之前只是偶然可行。 - gman
13
请注意,"ABC" 区分大小写!(刚花了很长时间才弄清楚这一点...) - Louis Somers
3
@sf.dev $('a').filter(function() { return !this.href || !this.href.match(/ABC/); }); - tvanfosson
9
现在这可以使用普通 JavaScript。您只需使用 document.querySelectorAll('a[href$="ABC"]') 即可实现此功能。 - k-nut
@bitten 这个问题是关于jQuery属性选择器的。在jQuery中,它是一个有效的条件操作。 - tvanfosson
显示剩余3条评论

24
$('a[href$="ABC"]:first').attr('title');

这将返回第一个链接的标题,该链接的URL以"ABC"结尾。


4
更正:以ABC结尾 - sparkyspider
实际上,有一点不同。这将选择具有给定href的第一个链接,如果您只需要更改一个链接,则非常有用。 - alekwisnia

16
$("a[href*='id=ABC']").addClass('active_jquery_menu');

2
对于未来可能从该答案中受益的访问者。 - sscirrus
@Sumit 注意,如果OP的“ABC”恰好指的是ID,则您的答案才是正确的。 - sscirrus

6
$("a[href*=ABC]").addClass('selected');

5

如果您不想导入像jQuery这样的大型库来完成这个微不足道的事情,您可以使用内置方法querySelectorAll。几乎所有用于jQuery的选择器字符串也适用于DOM方法:

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

或者,如果您知道只有一个匹配的元素:

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

如果您要搜索的属性值是字母数字组合,通常可以省略属性值周围的引号,例如,在此处,您也可以使用

a[href$=ABC]

但引号更加灵活,通常也更可靠


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接