次の問題があります。
私は持っている :
<p class="site_text"><div>Some text</div></p>
divタグを削除してテキストをそのまま残そうとしていますが、次のコードがあります
$('p.site_text').remove('<div>');
$('p.site_text').remove('</div>');
段落から div を削除しません。誰でも助けることができますか?
よろしく、ゾラン
次の問題があります。
私は持っている :
<p class="site_text"><div>Some text</div></p>
divタグを削除してテキストをそのまま残そうとしていますが、次のコードがあります
$('p.site_text').remove('<div>');
$('p.site_text').remove('</div>');
段落から div を削除しません。誰でも助けることができますか?
よろしく、ゾラン
div
タグ内に a を入れることはできませんp
。これは HTML ルールに違反しており、Chrome では機能しません。を に置き換えるp
とdiv
、次のコードを使用できます:
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>
<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
と認識しないため、 を使用してセレクターを修飾することはできません。div
p
ただし、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");