как перебирать вложенные элементы ‘div’ с помощью cheerio

#javascript #jquery #node.js #cheerio

#javascript #jquery ( jquery ) #node.js #приветствую

Вопрос:

Я пытаюсь изменить каждый <div> элемент в моем HTML-файле, обернув его новыми строками с помощью cheerio.

входные данные:

 <html>
    <body> 
        <div>
            <div><div>Hi</div></div>
            <div>hello</div>
            <div>ur awesome</div>
        </div>
    </body>
</html>
 

Ожидаемый результат:

 <html>
    <body> 

        <div>

            <div>

                <div>Hi</div>

            </div>


            <div>hello</div>


            <div>ur awesome</div>

        </div>

    </body>
</html>
 

результат, который я получил:

 <html><head></head><body> 
        
 <div>
            <div><div>Hi</div></div>
            <div>hello</div>
            <div>ur awesome</div>
        </div> 

    
</body></html>
 

Проблема: он не добавляет новые строки к вложенным <div> элементам. Попробовал использовать $(this) контекст, но ничего не вышло.

код:

 const c = require('cheerio')
const $ = c.load(html);

$('div').each((i,e) => {
    let mod = `n ${ c.html($(e)) } n`
    $(e).replaceWith(mod)
})

console.log($.html())
 

Ответ №1:

Вы могли бы сделать:

 $('div').before("n").after("n")
 

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

1. спасибо, это сработало. Я не знал, что мы можем сделать это без зацикливания 🙂