Javascript 在jquery中只删除父元素而不删除其子元素
我想得到一个部门的内部html,我想从该html中删除特定的元素,看看下面的htmlJavascript 在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>
<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标记周围没有其他容器(您想要保留),就可以了。