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()
获取所有元素,但如果您想单独处理它们,您需要遍历每个元素。