0

以下のコードで、親段落タグを持つメタ タグを削除したかったのです。

<p>
    <meta content="text/html; charset=unicode" http-equiv="Content-Type" />
</p>
<p>
    <meta content="MSHTML 8.00.6001.18702" name="GENERATOR" />
</p>
<div>
    <img border="0" src="http://localhost:15978/TestImages/Que_152_0/51099.jpg" /></div>
<br />
<br />
<div>
    write something on the pic shown.</div>

を使用してメタタグを削除できます

.replace(/<meta([^>]+)>/g, '');

正規表現、正規表現でメタを親のパラグラフ タグに置き換える必要がありました

4

2 に答える 2

1

これは、次の短い jQuery コマンドで簡単に実行できます。

$('p meta').remove();

<meta>の子であるタグの検索は、セレクター<p>で簡単に記述でき、remove()一致するすべての要素を一度に削除します。

HTML が文字列の場合は少し複雑になりますが、それでもそれほど悪くはありません。

var content = '...insert above html here...';

// insert into a div to parse as HTML
var $content = $('<div />').html(content);

// find all <meta> tags inside <p> and remove them
$content.find('p meta').remove();

// convert contents back to a string
content = $content.html();

作業フィドル: http://jsfiddle.net/WVWPS/

<meta>上記のコードは私には機能しますが、一部のブラウザーでは、ドキュメントの本文にある有効な HTML 要素ではないという事実が原因で問題が発生する場合があります。この質問は、場合によってはjQueryが要素を適切に作成できない可能性があることを示唆しています<meta>

ブラウザ固有の問題が発生した場合は、次のようなことを試すことができます。

var content = '...insert above html here...';

// convert <meta> tags to <span> tags with a "meta" class
content = content.replace(/<meta /g, '<span class="meta" ');

// insert into a div to parse as HTML
var $content = $('<div />').html(content);

// find all .meta elements inside <p> and remove them
$content.find('p .meta').remove();

// convert contents back to a string
content = $content.html();

作業フィドル: http://jsfiddle.net/a4Wa3/

HTML を解析する前に、string-replace を実行して<meta>タグを<span class="meta">タグに変換します。

この最後のオプションは非常に脆弱なソリューションであり、メタ タグの生成方法を変更すると機能しなくなる可能性があることに注意してください。原則として、正規表現やその他の文字列関数を使用した HTML の操作は避ける必要があります。深刻な副作用が生じる可能性があるためです。

于 2013-06-24T07:27:21.650 に答える
0

jQueryで次のことができます。

$("meta").each(function () {
    var $this = $(this);
    if ($this.parents("p").length > 0) {
        $this.remove();
    }
});

リンクのテスト

于 2013-06-24T07:22:49.677 に答える