Javascript 为什么jQuery在选择器中链接.attr()时只选择一个元素?

Javascript 为什么jQuery在选择器中链接.attr()时只选择一个元素?,javascript,html,jquery,dom,web-crawler,Javascript,Html,Jquery,Dom,Web Crawler,我有一个简单的链接列表: <ul> <li><a href="1">link 1</a></li> <li><a href="2">link 2</a></li> <li><a href="3">link 3</a></li> <li><a href

我有一个简单的链接列表:

<ul>
  <li><a href="1">link 1</a></li>
  <li><a href="2">link 2</a></li>
  <li><a href="3">link 3</a></li>
  <li><a href="4">link 4</a></li>
  <li><a href="5">link 5</a></li>
  <li><a href="6">link 6</a></li>
  <li><a href="7">link 7</a></li>
  <li><a href="8">link 8</a></li>
  <li><a href="9">link 9</a></li>
  <li><a href="10">link 10</a></li>
</ul>
如何使用jQuery选择这些链接

$('a')
-返回所有链接

如何获取这些链接的所有内容(“链接1”、“链接2”、“链接3”…)

$('a').text()

如何从链接(1、2、3…)获取所有HREF

$('a').attr('href')

不正确^ 它只选择第一个链接并返回
1
,而不是
[1,2,3,4,5,6,7,8,9,10]

我知道我可以
映射
,做
每一个
等等。但我正在编写一个经常使用这个的爬虫程序,我想知道为什么会发生这种情况,以及我是否可以在这里使用jQuery(最好是jQuery核心)选择器而不使用任何循环来获取所有的HREF


演示:

如果不循环DOM元素,就无法真正循环DOM元素

循环不会对web爬虫的性能产生任何显著影响

话虽如此,你只是在看:

$('a').each(function() {
  console.log($(this).text());
});

演示:

所以,为了让大家明白这一点。。。你想在没有任何循环的情况下对链接进行循环(以获取其内容)?需要循环,除非你想对每个索引进行硬编码,这是湿的和愚蠢的。不要那样做。不要害怕循环。计算机很快,你需要循环。没有别的办法了。它不会影响程序的性能。我知道这听起来很愚蠢,但不知何故,我正在使用
$('a').text()获取所有链接,并且不需要循环。这里的交易是什么?@Wordpressor Description on
.text()
由jQuery提供:“获取匹配元素集中每个元素的组合文本内容,包括其子元素,或设置匹配元素的文本内容。”您可以使用
.text()
获取所有元素,但如果您想单独处理它们,您需要遍历每个元素。