Как преобразовать HTML в текст с помощью jQuery?

Я хотел бы сделать так, чтобы дети любого элемента с классом "snippet" считывались как текст вместо HTML. Я знаю, что для этого мне нужно изменить < и > знаки, чтобы HTML-страница считывала их как текст. Я пытался это сделать, но, к сожалению, у меня есть только:

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

5 ответов


вы можете использовать jQuery .text() функция, которая удалит теги HTML:

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

вот демонстрация:http://jsfiddle.net/meZjw/

документы на .text(): http://api.jquery.com/text

обновление

Sime Vidas имеет хороший момент, Вы можете перебирать различные .snippet элементы, меняющие структуру HTML по одному:

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

вот демо используя $.each(): http://jsfiddle.net/meZjw/1/

обновление

Aepheus имеет хороший момент, я не знаю, если это то, что спрашивают, но вы можете сделать функцию, которая будет избегать HTML-сущностей, как на других языках:

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

вот демо:http://jsfiddle.net/meZjw/2/

обновление

вы также можете использовать .text() и .html() в обратном порядке, как мой пример выше, чтобы показать HTML элемента как простой текст:

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

вот демо:http://jsfiddle.net/meZjw/31/


Это должно работать:

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

демо: http://jsfiddle.net/RrUAA/1/


может быть, вы хотите, чтобы ваш код, чтобы быть показано? http://jsfiddle.net/vVgvt/4/

$('.snippet').html().replace(/</g, "&lt;").replace(/>/g, "&gt;");

попробуй такое

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

этой - это то, что я использую:

<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>

вырезать те части, которые вам нужны.