2011-12-16 15 views
5

Vorrei fare in modo che i figli di qualsiasi elemento con la classe "snippet" vengano letti come testo anziché HTML. Sono consapevole che per fare questo, avrei bisogno di cambiare i segni < e > in modo che la pagina HTML li legge come testo. Ho cercato di fare questo, ma purtroppo, ho solo:Come convertire HTML in testo usando jQuery?

function(){ 
$('.snippet') 
} 
+2

Stai chiedendo un modo per visualizzare l'HTML di '.elementi snippet' come testo (con i nomi dei tag)? Sono un po 'confuso dalla tua formulazione. – Blender

+0

Quando fai una domanda per favore specifica, e fai un esempio. –

risposta

12

È possibile utilizzare la funzione di jQuery .text() che rimuoverà i tag HTML:

var text_only = $('.snippet').text(); 

Ecco una dimostrazione: http://jsfiddle.net/meZjw/

Documenti per .text(): http://api.jquery.com/text

AGGIORNAMENTO

Sime Vidas ha un buon punto, è possibile scorrere le diverse .snippet elementi cambiando la loro struttura HTML, uno alla volta:

$.each($('.snippet'), function (index, obj) { 
    var $this = $(this); 
    $this.html($this.text()); 
}); 

Ecco una demo utilizza $.each(): http://jsfiddle.net/meZjw/1/

UPDATE

Aepheus ha un buon punto, non so se questo è ciò che viene chiesto, ma è possibile effettuare una funzione che sarà entità del Capo HTML come in altre lingue:

function htmlEntities(str) { 
    return String(str).replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;'); 
} 

Ecco demo: http://jsfiddle.net/meZjw/2/

UPDATE

È inoltre possibile utilizzare .text() e .html() nell'ordine opposto come il mio sopra esempio, per l'effetto di mostrare l'HTML di un elemento come testo semplice:

$.each($('.snippet'), function (index, obj) { 
    var $this = $(this); 
    $this.text($this.html()); 
}); 

Ecco una demo: http://jsfiddle.net/meZjw/31/

+0

Se c'è più di un elemento "snippet" nella pagina (che è probabile), il selettore ''.snippet'' da solo non è sufficiente, poiché' .text() 'restituisce il contenuto di testo concatenato di * all * elementi abbinati. –

+1

Perché questo viene votato, meglio posso dire che non risponde alla domanda. Per "

test

" .text() restituirà "test", il risultato desiderato è "

test

". E la seconda metà, come visualizzare questo nella pagina non viene data risposta. – aepheus

+0

@aepheus Buon punto, ho interpretato la domanda in modo diverso. Il secondo ** aggiornamento ** alla mia risposta fornisce un modo per sfuggire alle entità HTML. – Jasper

9

Questo dovrebbe funzionare:

$('.snippet').each(function() { 
    $(this).text($(this).html()); 
}); 

demo dal vivo:http://jsfiddle.net/RrUAA/1/

+0

Questa è la risposta più completa e copre anche la copia dell'elemento stesso. Buon lavoro. – aepheus

+0

Ehi, e se non volessi convertire
nel testo? Voglio solo che interrompa la linea anziché stamparla come testo. – Aviator

0

provare questo

$('.snippet').text($('.snippet').html()); 
0

This è quello che io uso:

<span class="snippet">Who me? Why thank you.</span> 
<div id="show_text"></div> 
<script type="text/javascript" charset="utf-8"> 
(function($) { 

    var data = $('.snippet').text(); // or how ever you collect the data Object 

    $('div#show_text').append(decodeURIComponent(jQuery.param(data))); 

// debug report: 
    if($.browser.mozilla){ //If you talk the talk, then you should toSource() 
    console.log(data.toSource()); 
    }else{ 
    console.log(data); 
    } 
})(jQuery); 
</script> 

tagliare le parti di cui avete bisogno.

Problemi correlati