如何根据href属性在页面中找到一个链接?

18

我试图找到我的页面中第一个链接的URL与"AAA"(例如)匹配。

我首先尝试使用此href获取链接:

$('a[href$="AAA"]')
然后选择第一个:
$('a[href$="AAA"]')[0]

然后针对此链接的标题属性进行目标定位

$('a[href$="AAA"]')[0].attr("title");

但是每一步都返回“undefined”。如何做到这一点?

示例锚点:

<a href="contents/medias/images/news/news_test_big.jpg" title="Nouvelle réalisation en ligne 1 FR" target="_blank" class="imageLink">

你能否发布一个实际的<a>标签示例? - Pointy
这是其中一个链接:<a href="contents/medias/images/news/news_test_big.jpg" title="Nouvelle réalisation en ligne 1 FR" target="_blank" class="imageLink">谢谢! - daviddarx
@daviddarx 我已经在你的问题中添加了示例。 - Neil Aitken
1
你想匹配 href 的哪一部分? - user113716
您可以使用 length 属性来测试找到了多少个元素,例如 $('a[href=contents/medias/images/news/news_test_big.jpg]').length。 将其记录到 console.log()alert() 中以查看匹配的内容。 - user113716
显示剩余2条评论
4个回答

19

如何尝试:

$("a[href='AAA']").first().attr("title")
// or
$("a[href='AAA']:first").attr("title")

这取决于您想让 href 等于 'AAA',包含它,以它开始/结束。在这种情况下,您不会使用 href=,而是使用例如 href$=Neil的答案 包含您可以使用的不同类型的测试。

如果您能发布您的 HTML 代码,那将更有帮助。


@neil:没错,我已经把它加到我的答案里了。 - marcgg
我会尝试一下,几分钟后回来。 - daviddarx
糟糕,它告诉我First不是一个函数:错误:$(“a [href ='”+ imageToDisplay +“']:first”).first不是一个函数 源文件:http://vqt/interface/js/custom/general.js 行:178 - daviddarx
@daviddarx:应该是 .first(),而不是 .first。 - marcgg

6

$('a[href$="AAA"]') 应该可以正常工作,但它是在搜索以 AAA 结尾的 href

尝试使用以下方法: $('a[href="AAA"]') - 等于 AAA
或者: $('a[href*="AAA"]') - 包含 AAA


3
假设你有一个匹配的链接(即以AAA结尾的链接)。
$('a[href="AAA"]:first').attr('title');

应该可以正常工作。

你得到 attr 的 undefined 值的原因是,当你在查询结果上应用索引器后,它不是一个 jQuery 对象,而是实际的 DOM 元素。要使用 attr,它仍然需要是一个 jQuery 对象。使用 :first 选择器将把查询结果缩小到第一个匹配项。由于 attr 将返回第一个匹配属性的值,因此它并不是绝对必要的,但我认为这使意图更清晰。如果您要设置属性值,则 attr 将应用于所有匹配元素,因此在这种情况下很重要 - 因此我会在两个位置都使用它以增加清晰度。


+1 - 这是正确的,[0]导致了错误。但是 $('a[href$="AAA"]')[0].attr("title"); 太过了 - 它不会返回 undefined,而是抛出异常:".attr 不是一个函数"。 - Kobi

2

你的写法中,你要查找一个以“AAA”结尾的href。这是你的意图吗?

  • $= 表示“以...结尾”
  • ^= 表示“以...开头”
  • ~= 表示“包含...”

参考资料:jQuery选择器


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