Удалите все HTML-теги в строке (с помощью jquery text () function)

можно ли использовать текст jquery ( ) для удаления всего HTML в строке?

Строка с тегами HTML:
myContent = '

Привет, мир!
';


Результат должен быть:
Hello world!

27
задан Peter 25 October 2011 в 13:11
поделиться

3 ответа

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

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

Это приводит к привет миру. Это отвечает на ваш вопрос?

http://jsfiddle.net/D2tEf/ для примера

81
ответ дан 28 November 2019 в 04:02
поделиться

Другой вариант:

 $("<p>").html(myContent).text();
6
ответ дан 28 November 2019 в 04:02
поделиться

Если вам нужно удалить HTML, но вы не знаете, содержит ли он какие-либо HTML-теги, вы не можете напрямую использовать метод jQuery, поскольку он возвращает пустую оболочку для текста, отличного от HTML.

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

Вы должны либо обернуть текст в действительный HTML:

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

Или использовать метод $ .parseHTML () (начиная с jQuery 1.8), который может обрабатывать как HTML, так и не HTML текст:

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

Плюс parseHTML полностью удаляет теги сценариев, что полезно в качестве защиты от взлома для пользовательских вводимых данных.

$('<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"
12
ответ дан 28 November 2019 в 04:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: