在jquery中仅删除父元素而不是其子元素

时间:2014-03-14 19:03:13

标签: javascript jquery html

我想得到一个分区的内部html,我想从那个html remove particular elements,看看下面的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>

从上面的html我想得到mainDiv的innerHTML而我想删除removeSpanremoveDiv我想要删除remove div我正在做的事情的孩子到目前为止..

var fullHtml = $('mainDiv').html();
var filterHtml= fullHtml .replace('<span id='removeSpan'>Remove Me</span>','');  

this working for this element bcoz i dont want childs of this element
但ican如何只删除removeDiv [只有它的开关标签而不是孩子],最终结果应该是

 <p>dont remove me</p>
 <p>dont remove me</p>
 <p>dont remove me</p>

感谢立即回复..
bt here i dont want to change my application screen[html]。我只想收集内部HTML(当然,像我说的那样删除后)作为字符串变量。我可以做到这一点......抱歉有问题!

2 个答案:

答案 0 :(得分:3)

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

FIDDLE

$('#mainDiv p').unwrap().siblings('#removeSpan').remove();

FIDDLE

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

$('#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');

答案 1 :(得分:1)

根据你所写的内容...... .unwrap()和.remove()的组合将起到作用。

<script type="text/javascript">
// <![CDATA[
(function($){
    $(document).ready(function(){
        $('TRIGGER').on('click', function(){
            $('#removeDiv p').unwrap();
            $('#removeSpan').remove();
        });
    });
})(jQuery);
// ]]>
</script>
当.remove()删除该特定元素时,

.unwrap()将从元素中删除父元素。