est-il possible d'utiliser la fonction jquery text () pour supprimer tout le code HTML d'une chaîne?
Chaîne avec balises HTML: myContent = '<div id="test">Hello <span>world!</span></div>';
Le résultat doit être:
Hello world!
var myContent = '<div id="test">Hello <span>world!</span></div>';
alert($(myContent).text());
Cela se traduit par bonjour le monde. Est-ce que ça répond à votre question?
http://jsfiddle.net/D2tEf/ pour un exemple
J'ai créé ce cas de test: http://jsfiddle.net/ccQnK/1/ , j'ai utilisé la fonction de remplacement Javascript avec des expressions régulières pour obtenir les résultats souhaités.
$(document).ready(function() {
var myContent = '<div id="test">Hello <span>world!</span></div>';
alert(myContent.replace(/(<([^>]+)>)/ig,""));
});
Si vous devez supprimer le code HTML sans savoir s'il contient réellement des balises HTML, vous ne pouvez pas utiliser directement la méthode jQuery car elle renvoie un wrapper vide pour du texte non HTML.
$('<div>Hello world</div>').text(); //returns "Hello world"
$('Hello world').text(); //returns empty string ""
Vous devez soit envelopper le texte en HTML valide:
$('<div>' + 'Hello world' + '</div>').text();
Ou utilisez la méthode $ .parseHTML () (depuis jQuery 1.8) qui peut gérer les textes HTML et non HTML:
var html = $.parseHTML('Hello world'); //parseHTML return HTMLCollection
var text = $(html).text(); //use $() to get .text() method
De plus, parseHTML supprime complètement les balises de script, ce qui est utile comme protection anti-piratage pour les entrées utilisateur.
$('<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"
Ne pourriez-vous pas simplement l'essayer ?
myContent = '<div id="test">Hello <span>world!</span></div>';
console.log($(myContent).text()); //Prints "Hello world!"
Notez que vous devez envelopper la chaîne dans un objet jQuery, sinon il n'aura évidemment pas de méthode text
.
Une alternative:
$("<p>").html(myContent).text();
J'ai trouvé dans mon cas spécifique que je devais juste couper le contenu. Peut-être pas la réponse à la question. Mais je pensais que je devrais ajouter cette réponse de toute façon.
$(myContent).text().trim()