使用 jQuery 获取 link 的文本

Getting the text of a link with jQuery

所以我正在尝试为 Chrome 开发自己的扩展。第一次尝试时,我想创建一个扩展,将页面中的所有 link 收集到一个地方。
因为不知道link是什么类型,所以只好通过选择linkhref和link的属性来得到文字。
link href 属性选择器工作正常,但我似乎无法使用我的代码获取 link 文本。它总是 return 未定义。这是我的代码:
$("a[href^='http']").eq(i).innerHTML
(i 是 for 循环中的变量,假装它是某个数字)
$("a[href^='http']").eq(i) 应该是 return 元素吧?那我错过了什么?

这里有一个片段可以向您展示我的意思:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<!DOCTYPE html>
<html>

<body><a href="https://www.google.com/">link1</a><a href="https://www.google.com/">link2</a><a href="https://www.google.com/">link3</a>
</body>
<p id="log">Pretend this is the console: </p>
<script>
  for (var i = 0; i < document.links.length; i++) {
    document.getElementById("log").innerHTML += ($("a[href^='http']").eq(i).attr("href") + " (" + $("a[href^='http']").eq(i).innerHTML + ") / ");
  }
</script>

</html>

innerHTML 是一种方法,而不是 属性,像这样使用它:$("a[href^='http']").eq(i).innerHTML()

澄清一下,.eq(i) 方法 returns 不是 DOMElement,而是 jQuery 对象。 jQuery 对象具有 innerHTML() 方法 - returns jQuery 对象引用的元素内的 html 字符串。

附带说明 - 鉴于您要获取的是文本,而不是 html,也许您实际上最好还是使用 .text() 方法?

我假设下面的 link 由选择器

重新调整
<a href="http://chat.whosebug.com" class="js-gps-track" data-gps-track="site_switcher.click({ item_type:6 })">chat</a>

如果您想检索 Link 文本,请尝试

$("a[href^='http']").eq(i).text() 

如果你想检索 Link URL 然后尝试

$("a[href^='http']").eq(i).attr('href')

获取所有a标签并迭代它,你可以得到href值如下代码:

$("body").find('a').each(function() {
    console.log($(this).attr('href'));
});

看看这个,https://jsfiddle.net/mogaax3g/

您可以使上面的代码按如下方式工作。正如评论中提到的,JQuery returns 是一个 JQuery 对象。要访问实际元素,请在 JQuery 对象之后使用索引。

$("a[href^='http']")[i].innerHTML

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<!DOCTYPE html>
<html>

<body><a href="https://www.google.com/">link1</a><a href="https://www.google.com/">link2</a><a href="https://www.google.com/">link3</a>
</body>
<p id="log">Pretend this is the console: </p>
<script>
  for (var i = 0; i < document.links.length; i++) {
    document.getElementById("log").innerHTML += ($("a[href^='http']").eq(i).attr("href") + " (" + $("a[href^='http']")[i].innerHTML + ") / ");
  }
</script>

</html>