25

だから私は次の文字列を持っています:

var s = '<span>Some Text</span> Some other Text';

結果は、「その他のテキスト」という内容の文字列になります。

私は試した...

var $s = $(s).not('span');

...そして、、などの他の多くのものremove()が機能しnot()ませんでした。

助言がありますか?文字列を正規表現と一致させることはできますが、一般的なjQueryソリューションを好みます。

編集:

正規表現を使用してソリューションを検索しませ。なぜこの例が機能しないのか疑問に思っています:http: //jsfiddle.net/q9crX/150/

4

6 に答える 6

57

jQueryオブジェクトでラップstringして、次のような操作を行うことができます。

var removeElements = function(text, selector) {
    var wrapped = $("<div>" + text + "</div>");
    wrapped.find(selector).remove();
    return wrapped.html();
}

利用方法

var removedSpanString = removeElements("<span>Some Text</span> Some other Text", "span");

このアプローチの利点は、削除するjqueryセレクターを指定できることです。つまり、文字列内のを削除したい場合があり<th>ます。その場合、これは非常に便利です。お役に立てれば!

于 2012-08-24T13:12:29.387 に答える
15

非常に単純なアプローチ:

var html = '<span>Remove <b>tags &amp; entities</b></span>';
var noTagText = $(html).text();
// ==> noTagText = 'Remove tags & entities'

タグだけでなくhtmlエンティティも削除されることに注意してください。

于 2014-02-04T16:42:22.530 に答える
11

これはあなたのニーズに合うかもしれません:

<([^ >]+)[^>]*>.*?</\1>|<[^/]+/>

正規表現の視覚化

Debuggexデモ

JavaScriptの場合:

$s = s.replace(/<([^ >]+)[^>]*>.*?<\/\1>|<[^\/]+\/>/ig, "");

また、自動終了タグ(例<br />)を削除します。

于 2012-08-24T13:06:30.057 に答える
4

このようなhtmlタグを削除するだけです

デモ

var s = '<span>Some Text</span> Some other Text';
var r = /<(\w+)[^>]*>.*<\/\1>/gi;
s.replace(r,"");

ここで与えられた答え:http://www.webdeveloper.com/forum/showthread.php?t = 252483

于 2012-08-24T13:06:28.130 に答える
3

次の手順を実行してください。

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script>

<script>
$(document).ready(function(){
 $("span").not("span div").each(
 function(index, element) {
$("span").remove();
 }
 );
 });

</script>

<span>Some Text</span> Some other Text
于 2012-08-24T13:22:02.370 に答える
2

リンクを確認

例:あなたのケースにより具体的:-

var s = '<span>Some Text</span> Some other Text';
var $s = s.replace(/<span>(.*)<\/span>/g, "");
于 2012-08-24T13:08:03.967 に答える