Как бы я конвертировать HTML в текст, используя jQuery? - PullRequest
6 голосов
/ 16 декабря 2011

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

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

Ответы [ 5 ]

14 голосов
/ 16 декабря 2011

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

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

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

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

UPDATE

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

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

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

UPDATE

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

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

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

UPDATE

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

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

Вот демоверсия: http://jsfiddle.net/meZjw/31/

10 голосов
/ 16 декабря 2011

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

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

Демонстрационная версия: http://jsfiddle.net/RrUAA/1/

2 голосов
/ 16 декабря 2011

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

$('.snippet').html().replace(/</g, "&lt;").replace(/>/g, "&gt;");
0 голосов
/ 15 сентября 2012

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

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

вырезаем детали, которые вам нужны.

0 голосов
/ 16 декабря 2011

попробуйте

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