2016-05-04 3 views
4

Я использую node.js.Как развернуть дочерний элемент с помощью cheerio?

Я использую cheerio html parser для чтения html-документа.

В этом примере

<div class="a b c"> 
     <a id="ddd"/> 
     sample 
</div> 

Я попытался это

var cheerio = require('cheerio'); 
    var c$ = cheerio.load(/*html content*/); 
    var cntext = c$('div').html(); 

cntext содержит нужный DIV и всех его потомков.

Как я могу удалить div и сохранить только узлы для детей?

Заранее спасибо.

ответ

1

Простое решение с JQuery

Вы можете просто преобразовать его в HTML элемент, используя $ (HTML_SSTRING_VAR) для создания HTML и использовать .html() функцию, чтобы получить innerHTML, как и в первом случае можете использовать

var s=$("#Div").html(); 
 
var temp=$(s); 
 
alert(temp.html());
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script> 
 
<div id="Div"> 
 
    
 
<div class="demo-container"> 
 
    <div class="demo-box">Demonstration Box</div> 
 
</div> 
 
    </div>
Pure Jav Простейший ascript Решение

Просто найти подстроку между последним вхождением «<» и первым появлением «>» , которое было бы содержанием при условии, что родные функции javscript должны работать отлично.

Javscript Substring Function Documentation

var s=$("#Div").html(); 
 
s = s.substring(s.indexOf(">")+1,s.lastIndexOf("<")-1); 
 
alert(s);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script> 
 
<div id="Div"> 
 

 
<div class="demo-container"> 
 
    <div class="demo-box">Demonstration Box</div> 
 
</div> 
 
    </div>

Другой простой способ сделать это

Просто Создать ДИВ добавить содержимое HTML внутри него и доступ к необходимой содержание, innerHTML ребенка di v в процессе мы путем передать DIV, который должен был быть устранен

innerHTML Documentation

Children Documentation

var s=$("#Div").html(); 
 
var temp = document.createElement('div'); 
 
temp.innerHTML = s; 
 
alert(temp.children[0].innerHTML);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script> 
 
<div id="Div"> 
 

 
<div class="demo-container"> 
 
    <div class="demo-box">Demonstration Box</div> 
 
</div> 
 
    </div> 
 

.unwrap()Возвращает: JQuery Desc ription: Удалите родителей из набора из элементов, сопоставленных с DOM, оставив согласованные элементы в своем месте. .unwrap() documentation

ALL IN ONE FIDDLE

1

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

$('div[class="a b c"]')

см https://github.com/cheeriojs/cheerio#selectors

вам нужно перебирать прямые потомок выбранного DIV,

$('div[class="a b c"]').children().each(fn)

см https://github.com/cheeriojs/cheerio#childrenselector

вам нужно переместить каждые ребенок найденных после ранее найдено div

$('div[class="a b c"]').children().each(function(index, element){ 
    $(element).insertAfter($(element).parent()); 
}) 

см https://github.com/cheeriojs/cheerio#each-functionindex-element-

вам необходимо удалить пустой div

$('div[class="a b c"]').remove()

см https://github.com/cheeriojs/cheerio#remove-selector-

писал на лету, дайте мне знать.

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