Приветствие, как получить текстовые узлы, связанные с другим тегом

#node.js #jquery-selectors #cheerio

#node.js #jquery-селекторы #приветствие

Вопрос:

я решил это раньше, но теперь забыл. Как я могу получить доступ к этой дате, когда мой основной селектор

$('.date')

 let cheerio = require('cheerio')
let html = `
<html>
    <body>
        <span class="date">
            <span class="category">Article</span>
            Sat, 22 Jan 2021 11:12
        </span>
    </body>
</html>`

let $ = cheerio.load(html)

// Empty
console.log($('.date').next().text())
// Empty
console.log($($('.date').children()[0]).next().next().text())
// Empty
console.log($($('.date').children()[0]).next().text())
// Empty
$('.date').each(el => { console.log($(el).text())})
 

Комментарии:

1. Это работает ? $('.date').contents().last().text()

2. Вау, я не помню, чтобы я раньше пользовался контентом, да! это работа и add .trim() поскольку так много места, спасибо <3,1 часа, я разбираюсь в этом

3. я этого не видел cheerio.js.org/Cheerio.html#contents

Ответ №1:

Далее к комментарию @Dario:

Функция contents ():

Получает дочерние элементы каждого элемента в наборе сопоставленных элементов, включая текстовые и комментирующие узлы.

Итак, вы можете сделать это:

 let cheerio = require('cheerio')
let html = `
<html>
    <body>
        <span class="date">
            <span class="category">Article</span>
            Sat, 22 Jan 2021 11:12
        </span>
    </body>
</html>`

let $ = cheerio.load(html)

let val = $('.date').contents().last().text()

console.log(val.trim())
// prints Sat, 22 Jan 2021 11:12