wake-up-neo.net

Entfernen Sie alle HTML-Tags in einem String (mit der Funktion jquery text ()).

ist es möglich, die Funktion jquery text () zu verwenden, um den gesamten HTML-Code in einem String zu entfernen?

Zeichenfolge mit HTML-Tags:
myContent = '<div id="test">Hello <span>world!</span></div>';


Das Ergebnis muss lauten:
Hello world!

25
Peter
var myContent = '<div id="test">Hello <span>world!</span></div>';

alert($(myContent).text());

Das ergibt eine Hallo Welt. Beantwortet das deine Frage?

http://jsfiddle.net/D2tEf/ als Beispiel

80
Ross Dargan

Ich habe diesen Testfall erstellt: http://jsfiddle.net/ccQnK/1/ . Ich habe die Javascript-Ersetzungsfunktion mit regulären Ausdrücken verwendet, um die gewünschten Ergebnisse zu erhalten.

$(document).ready(function() {
    var myContent = '<div id="test">Hello <span>world!</span></div>';
    alert(myContent.replace(/(<([^>]+)>)/ig,""));
});
24
Johann Myburgh

Wenn Sie den HTML-Code entfernen müssen, aber nicht wissen, ob er tatsächlich HTML-Tags enthält, können Sie die jQuery-Methode nicht direkt verwenden, da sie leeren Wrapper für Nicht-HTML-Text zurückgibt.

$('<div>Hello world</div>').text(); //returns "Hello world"
$('Hello world').text(); //returns empty string ""

Sie müssen den Text entweder in gültiges HTML einschließen:

$('<div>' + 'Hello world' + '</div>').text();

Oder verwenden Sie die Methode $ .parseHTML () (seit jQuery 1.8), die sowohl HTML- als auch Nicht-HTML-Text verarbeiten kann:

var html = $.parseHTML('Hello world'); //parseHTML return HTMLCollection
var text = $(html).text(); //use $() to get .text() method

Außerdem entfernt parseHTML Skript-Tags vollständig, was als Hacker-Schutz für Benutzereingaben nützlich ist.

$('<p>Hello world</p><script>console.log(document.cookie)</script>').text();
//returns "Hello worldconsole.log(document.cookie)"

$($.parseHTML('<p>Hello world</p><script>console.log(document.cookie)</script>')).text();
//returns "Hello world"
11
Radek Pech

Könntest du nicht einfach probier es ?

myContent = '<div id="test">Hello <span>world!</span></div>';
console.log($(myContent).text()); //Prints "Hello world!"

Beachten Sie, dass Sie die Zeichenfolge in ein jQuery-Objekt einschließen müssen, da es ansonsten keine text-Methode gibt.

7
James Allardice

Eine Alternative:

 $("<p>").html(myContent).text();
5
Hemerson Varela

Ich habe in meinem speziellen Fall festgestellt, dass ich nur den Inhalt zuschneiden musste. Vielleicht nicht die Antwort auf die Frage. Aber ich dachte, ich sollte diese Antwort trotzdem hinzufügen.

$(myContent).text().trim()
0