2016-07-02 10 views
1

Diese jQuery wie Selektor "cheerio" versucht, die Kommentare von den Kommentarknoten in einer HTML-Seite zu bekommen.
$ ist das cheerio-Objekt. Wie kann es das tun? DankHolen Sie den Kommentar Element Text mit Cherrio Selektor

console.log($('*').contents().length); //reports back more than 1000 


$('*').contents().filter(function() { 
    if (this.nodeType == 8) { 

    //the following gives null for every node found 
    console.log($(this).html()); 

    //the following gives blank for every node found 
    console.log($(this).text()); 
    } 
}); 

Antwort

2

Der Inhalt eines Kommentars ist nicht entweder HTML (.innerHTML) oder ein Wert (.value), es ist die .nodeValue. jQuery bietet keine Funktion, die für Sie zu bekommen, und ich bezweifle, Cheerio tut auch nicht, aber Sie brauchen nicht ein: Just this.nodeValue verwenden:

$('*').contents().filter(function() { 
    if (this.nodeType == 8) { 
    console.log(this.nodeValue); 
    } 
}); 

(I filter dort verwendet haben, weil Ihr Beispiel tat, aber wenn Sie nicht den Rückgabewert von filter verwenden, macht each mehr Sinn)

Hier ist ein DOM Beispiel, aber vermutlich wird Cheerio funktionieren ähnlich.

$("*").contents().each(function() { 
 
    if (this.nodeType === 8) { 
 
    console.log(this.nodeValue); 
 
    } 
 
});
<!-- Comment 1 --> 
 
<!-- Comment 2 --> 
 
<!-- Comment 3 --> 
 
<!-- Comment 4 --> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

Verwandte Themen