2016-04-21 9 views
1
<div class="hello"> 
    Text1 
    <li>Text2</li> 
    <div class="bye">Text3</div> 
    Text4 Block 
    <div class="bye">Text5</div> 
    Last Text5 
</div> 

Таким образом, у меня есть вышеуказанное, которое я захватываю в cheerio, используя $('div.hello'). Я хочу повторить это. Как я повторяю все, включая текстовые узлы? Я попытался использовать $('div.hello').contents(), но это не захватывает текстовые узлы («Text1», «Text4 Block» и «Last Text5»). Моя конечная цель состоит в том, чтобы разделить блок HTML, когда я добираюсь до первого элемента, который имеет класс . "до свидания" Я хочу массив, содержащий следующие HTML строки,Получить все дочерние узлы div, используя cheerio?

final_array = ['Text1 <li>Text2</li>', '<div class="bye">Text3</div> Text4 Block <div class="bye">Text5</div> Last Text5'] 

ответ

2

Вы можете попробовать использовать map или filter методы

Например:.

var text = $('div.hello').contents().map(function() { 
    if (this.type === 'text') 
     return $(this).text().trim() 
}).get() 

в основном в функции обратного вызова вам необходимо сыграть с if's, чтобы получить то, что вы хотите.

+0

В итоге я сделал что-то подобное, спасибо. –

Смежные вопросы