使用jquery从段落中删除div

使用jquery从段落中删除div,jquery,Jquery,我有以下问题: 我有: <p class="site_text"><div>Some text</div></p> 一些文本 我试图删除div标记并保持文本完整,我有以下代码 $('p.site_text').remove('<div>'); $('p.site_text').remove('</div>'); $('p.site_text')。删除(“”); $('p.site_text')。删除(“”); 这并没

我有以下问题:

我有:

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

一些文本

我试图删除div标记并保持文本完整,我有以下代码

$('p.site_text').remove('<div>');
$('p.site_text').remove('</div>');
$('p.site_text')。删除(“”);
$('p.site_text')。删除(“”);
这并没有从段落中删除div。有人能帮忙吗


请注意,Zoran不能将
div
放在
p
标记中,它既违反html规则,也不适用于Chrome。如果将
p
替换为
div
,则可以使用以下代码:
JSFiddle:
JS:

$('div.site_text div').wrapInner('').children().unwrap();
HTML:

一些文本
jQuery replaceWith()

尽管您的html无效,但您仍然可以在类似的有效场景中使用以下命令:

$("p.site_text").each(function() {
  $(this).html($(this).children(":first").html());

}))

只需打开内容
$('.site\u text div')。内容().unwrap()这就是所见即所得编辑器的工作方式。所以,我必须找到一种方法删除div标签。Musa,我只是测试了你的解决方案,但它不起作用。标签仍然存在。
div
内部
p
无论如何都无效。你想过修复HTML吗?Tim代码完全破坏了HTML。我尝试使用$(“p.site\u text div”).each(function(){但是div仍然存在。这是因为无效的结构。就浏览器而言,
div
不在
p
内。相反,它可能在
p
的父级中;你能使用父级来限定选择器吗?添加了一些关于如何更好地限定选择器的详细信息。蒂姆,我明白了这里丢失了…我的外部div名为searchresults。所以我尝试使用这个:var div=$(“#outer>searchresults”);$(“div”)。每个(函数(){var obj=$(this);obj.replacetwith(obj.html());});但是布局被破坏100%不再工作。明天将再次尝试,现在是凌晨4:30,我必须睡一觉。无论如何感谢你的帮助…我现在尝试了这个代码,div仍然存在:

πετσέταγιατηεετετερερρεερερκπεερρρππσηηττητττθτττεεεεεεεεεε953;τεεεεεεεεεεεεεε上周五的各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各τντηαντοχκαιείναισχεδιασμένεεεηαπλλλλένταπππλλφορ962;

未捕获语法错误:使用$(document).ready(函数($){$(“p.site_text”).each(函数(){$(this).html($(this.children(:first”).html();})时输入意外结束;尚未关闭document.ready函数,请将代码更改为$(document.ready)(函数(){$(“p.site_text”).each(函数(){$(this).html($(this.children(“:first”).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());
});
<p class="site_text"></p>
<div style='color:red'>Some text</div>
<div style='color:blue'>Another div</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");
$("p.site_text").each(function() {
  $(this).html($(this).children(":first").html());