Можно ли использовать функцию jquery text() для удаления всего HTML в строке?
Строка с тегами HTML: myContent = '<div id="test">Hello <span>world!</span></div>';
Результат должен быть: Hello world!
Можно ли использовать функцию jquery text() для удаления всего HTML в строке?
Строка с тегами HTML: myContent = '<div id="test">Hello <span>world!</span></div>';
Результат должен быть: Hello world!
var myContent = '<div id="test">Hello <span>world!</span></div>';
alert($(myContent).text());
Это приводит к приветствующему миру. Отвечает ли это на ваш вопрос?
http://jsfiddle.net/D2tEf/ для примера
Я создал этот тестовый пример: http://jsfiddle.net/ccQnK/1/, я использовал функцию замены Javascript с помощью регулярных выражений, чтобы получить желаемые результаты.
$(document).ready(function() {
var myContent = '<div id="test">Hello <span>world!</span></div>';
alert(myContent.replace(/(<([^>]+)>)/ig,""));
});
Если вам нужно удалить 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 полностью удаляет теги script, которые полезны в качестве защиты от взлома для пользовательских входов.
$('<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"
Не могли бы вы просто попробовать?
myContent = '<div id="test">Hello <span>world!</span></div>';
console.log($(myContent).text()); //Prints "Hello world!"
Обратите внимание, что вам нужно обернуть строку в объект jQuery, иначе он не будет иметь метод text
.
Другой вариант:
$("<p>").html(myContent).text();
В моем конкретном случае я нашел, что мне просто нужно обрезать контент. Возможно, не ответ на вопрос. Но я думал, что должен добавить этот ответ в любом случае.
$(myContent).text().trim()