0

次の問題があります。

私は持っている :

<p class="site_text"><div>Some text</div></p>

divタグを削除してテキストをそのまま残そうとしていますが、次のコードがあります

$('p.site_text').remove('<div>');
$('p.site_text').remove('</div>');

段落から div を削除しません。誰でも助けることができますか?

よろしく、ゾラン

4

3 に答える 3

1

divタグ内に a を入れることはできませんp。これは HTML ルールに違反しており、Chrome では機能しません。を に置き換えるpdiv、次のコードを使用できます:
JSFiddle: http://jsfiddle.net/aX3Hp/1/
JS:

$('div.site_text div').wrapInner('<span/>').children().unwrap();

HTML:

<div class="site_text"><div>Some text</div></div>
于 2013-04-06T00:56:03.933 に答える
1

jQuery replaceWith()

<p class="site_text">
    <!-- add some inline styles so we can see when div is removed -->
    <div style='color:red'>Some text</div>
    <div style='color:blue'>Another div</div>
</p>

$("div").each(function(){
   var obj = $(this);
   obj.replaceWith(obj.html());
});

有効

ただし、kpsuperplane が指摘するように、開始 HTML は無効です。このスクリプトを実行すると有効になりますがブラウザーがマークアップを修正しようとするため、階層型 jQuery セレクターは期待どおりに動作しません (試してみてください)。

ブラウザは構造を次のように解釈します。

<p class="site_text"></p>
<div style='color:red'>Some text</div>
<div style='color:blue'>Another div</div>
<p></p>

無効な構造のセレクターの影響に注意している限り、replaceWith()無効なマークアップがあっても正しく動作するように見えます。

より限定的なセレクターの使用

divsサイトのすべてを削除したくない可能性がありますが、ブラウザーはが 内にあるpと認識しないため、 を使用してセレクターを修飾することはできません。divp

ただし、pの親を使用してセレクターを修飾できます。

<!-- actual -->
<div id="searchresults">
    <p class="site_text">
        <div>Some text</div>
        <div>Another div</div>
    </p>
</div>

<!-- how the browser interprets -->
<div id="searchresults">
    <p class="site_text"></p>
    <div>Some text</div>
    <div>Another div</div>
    <p></p>
</div>

// a more restrictive selector
var divs = $("#searchresults > div");
于 2013-04-06T00:57:35.283 に答える