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/ccQnK/1/ 、Javascript置換関数を正規表現で使用して結果を取得しましたあなたがしたいこと。
$(document).ready(function() {
var myContent = '<div id="test">Hello <span>world!</span></div>';
alert(myContent.replace(/(<([^>]+)>)/ig,""));
});
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"
試してみてください ではありませんか?
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()