web-dev-qa-db-ja.com

文字列内のすべてのHTMLタグを削除します(jquery text()関数を使用)

jquery text()関数を使用して文字列内のすべてのHTMLを削除することは可能ですか?

HTMLタグ付きの文字列:
myContent = '<div id="test">Hello <span>world!</span></div>';


結果は以下でなければなりません
Hello world!

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

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

その結果、こんにちは世界になります。それはあなたの質問に答えますか?

http://jsfiddle.net/D2tEf/

81
Ross Dargan

このテストケースを作成しました: http://jsfiddle.net/ccQnK/1/ 、Javascript置換関数を正規表現で使用して結果を取得しましたあなたがしたいこと。

$(document).ready(function() {
    var myContent = '<div id="test">Hello <span>world!</span></div>';
    alert(myContent.replace(/(<([^>]+)>)/ig,""));
});
26
Johann Myburgh

HTMLを削除する必要があるが、実際にHTMLタグが含まれているかどうかわからない場合は、非HTMLテキストの空のラッパーを返すため、jQueryメソッドを直接使用することはできません。

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

有効なHTMLでテキストをラップする必要があります。

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

または、HTMLテキストと非HTMLテキストの両方を処理できるメソッド$ .parseHTML()(jQuery 1.8以降)を使用します。

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

試してみてください ではありませんか?

myContent = '<div id="test">Hello <span>world!</span></div>';
console.log($(myContent).text()); //Prints "Hello world!"

JQueryオブジェクトで文字列をラップする必要があることに注意してください。そうしないと、明らかにtextメソッドがありません。

7
James Allardice

別のオプション:

 $("<p>").html(myContent).text();
6
Hemerson Varela

特定のケースでは、コンテンツをトリミングするだけでよいことがわかりました。質問で尋ねられた答えではないかもしれません。しかし、とにかくこの答えを追加すべきだと思いました。

$(myContent).text().trim()
0