Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在jquery中只删除父元素而不删除其子元素_Javascript_Jquery_Html - Fatal编程技术网

Javascript 在jquery中只删除父元素而不删除其子元素

Javascript 在jquery中只删除父元素而不删除其子元素,javascript,jquery,html,Javascript,Jquery,Html,我想得到一个部门的内部html,我想从该html中删除特定的元素,看看下面的html <div id='mainDiv'> <p>dont remove me</p> <span id='removeSpan'>Remove Me</span> <div id='removeDiv'> <p>don't remove me</p> </div> <p>

我想得到一个部门的内部html,我想从该html中删除特定的元素,看看下面的html

<div id='mainDiv'>
  <p>dont remove me</p>
  <span id='removeSpan'>Remove Me</span>
  <div id='removeDiv'>
    <p>don't remove me</p>
  </div>
  <p>dont remove me</p>
</div>
此操作适用于此元素bcoz我不想要此元素的孩子

但是我如何才能只删除
removeDiv
[只删除开头和结尾标签而不是childs]
最终结果应该如下

 <p>dont remove me</p>
 <p>dont remove me</p>
 <p>dont remove me</p>
不要删除我

别把我赶走

别把我赶走

感谢您的即时回复。
bt here
我不想更改我的应用程序屏幕[html]
。我只想将innerHtml(当然是在我说过的删除之后)作为字符串收集到一个变量中。我能做这个吗。。对不起,麻烦了

$('#mainDiv').parent().append($('#mainDiv p')).end().remove();

这一个还保存数据和事件,也可以写入

$('#removeSpan').remove();
$('#mainDiv p').unwrap();
编辑:

如果您只想在变量中包含p标记的HTML

var html = $.map($('#mainDiv p'), function(e) { return e.outerHTML }).join('');
或者仅仅是段落

var p = $('#mainDiv').find('p');
var p = $('#mainDiv').clone(true).find('p');
或者是段落的复制品

var p = $('#mainDiv').find('p');
var p = $('#mainDiv').clone(true).find('p');

这一个还保存数据和事件,也可以写入

$('#removeSpan').remove();
$('#mainDiv p').unwrap();
编辑:

如果您只想在变量中包含p标记的HTML

var html = $.map($('#mainDiv p'), function(e) { return e.outerHTML }).join('');
或者仅仅是段落

var p = $('#mainDiv').find('p');
var p = $('#mainDiv').clone(true).find('p');
或者是段落的复制品

var p = $('#mainDiv').find('p');
var p = $('#mainDiv').clone(true).find('p');

根据你写的。。。.unwrap()和.remove()的组合就可以了

<script type="text/javascript">
// <![CDATA[
(function($){
    $(document).ready(function(){
        $('TRIGGER').on('click', function(){
            $('#removeDiv p').unwrap();
            $('#removeSpan').remove();
        });
    });
})(jQuery);
// ]]>
</script>

// 

.unwrap()将从元素中删除父元素,而.remove()将删除该特定元素。

根据您编写的内容。。。.unwrap()和.remove()的组合就可以了

<script type="text/javascript">
// <![CDATA[
(function($){
    $(document).ready(function(){
        $('TRIGGER').on('click', function(){
            $('#removeDiv p').unwrap();
            $('#removeSpan').remove();
        });
    });
})(jQuery);
// ]]>
</script>

// 

.unwrap()将从元素中删除父元素,而.remove()将删除该特定元素。

unwrap可能是这样,您想删除
mainDiv
中除
p
标记以外的所有标记吗?这始终是HTML布局吗?您只希望
mainDiv
innerHTML
值成为
p
标记?展开可能是这样,您希望删除
mainDiv
中除
p
标记以外的所有标记?这始终是HTML布局吗?您只希望
mainDiv
innerHTML
值成为
p
标记?展开
#mainDiv
中的
p
元素将删除mainDiv的标记。OP想要删除
removeDiv
的标记。因此,您需要将该行重新格式化为
$('#removeDiv p').unwrap()
@GroundZero-这不是“before”和“after”标记所暗示的。@adeneo-是的,他的after标记并不显示mainDiv。但他的问题表明,他希望将removeDiv从最终结果中删除。可能也是mainDiv,但他没有明确提到这一点。无论如何,如果OP同时需要这两个元素,只要div只包含您想要保留的p元素,并且没有其他容器(您想要保留)包围p标签,那么就可以了。在
#mainDiv
中展开
p
元素将删除mainDiv的标签。OP想要删除
removeDiv
的标记。因此,您需要将该行重新格式化为
$('#removeDiv p').unwrap()
@GroundZero-这不是“before”和“after”标记所暗示的。@adeneo-是的,他的after标记并不显示mainDiv。但他的问题表明,他希望将removeDiv从最终结果中删除。可能也是mainDiv,但他没有明确提到这一点。无论如何,如果OP同时需要这两个元素,只要div只包含您想要保留的p元素,并且p标记周围没有其他容器(您想要保留),就可以了。