从<ul>选择子元素

时间:2019-06-06 11:49:00

标签: javascript node.js cheerio

所以我想从列表中的所有元素中选择“ 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')
        }

我只会得到“未定义”的结果。

3 个答案:

答案 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数组