所以我想从列表中的所有元素中选择“ href”属性。因此,就我而言,我想从a元素获取链接。
所以我在每个循环中尝试了2种不同的方式。
HTML和JS示例:
<ul id="product_list">
<li>
<div class="class1">
<div class="class2>
<div class="class3">
<span class="productPic"></span>
<a class="link" href="www.THISLINK.com"></a>
</div>
<div class="title"></div>
<div class="logos"></div>
</div>
</div>
</li>
<li>
<div class="class1">
<div class="class2>
<div class="class3">
<span class="productPic"></span>
<a class="link" href="www.THISLINK.com"></a>
</div>
<div class="title"></div>
<div class="logos"></div>
</div>
</div>
</li>
<li>
<div class="class1">
<div class="class2>
<div class="class3">
<span class="productPic"></span>
<a class="link" href="www.THISLINK.com"></a>
</div>
<div class="title"></div>
<div class="logos"></div>
</div>
</div>
</li>
</ul>
let $ = cheerio.load(resp);
$('#product_list > li').each((index,element) => {
console.log($this).children('.link').attr('href');
}
$('.link').each((index,element) => {
console.log($this).attr('href')
}
我只会得到“未定义”的结果。
答案 0 :(得分:2)
$('#product_list .link').each(function(index, el){console.log($(el).attr('href'))})
答案 1 :(得分:0)
首先,它被称为can [:read, :update], Record, work_order: { rsvp_id: user.id }
而不是$(this)
。
此更改至少会为您提供所需的所有结果。如果现在只想让结果中实际包含信息,则可以使用第二个each循环,也可以使用$this
。
答案 2 :(得分:0)
使用map和es6,您可以这样做:
const hrefs = $('#product_list > li .link').map((i, el) => el.attr('href')).get()
请注意最后的get()将其转换为js数组