如何使用jQuery删除所有父级div

3
我有一个像这样的div结构
<body>
  <div>
    <nav></nav>
    <nav></nav>
    <div>
      <div id=parent-conatiner>
        <div>
          <ul>
            <li></li>
            <li></li>
          </ul>
        </div>
      </div>
    </div>
  </div>
</body>

现在我想删除

#parent-container
的所有父元素,但不删除
#parent-container
内的任何元素, 我不想使用克隆,然后将元素包含在中,因为我在#parent-container中使用了一些kendo控件,当我使用克隆的div时,kendo控件停止工作。 基本上,我不想使用以下逻辑:

var $cloned=$('#parent-conatiner')
$('body').empty();
$('body').append($cloned);

任何帮助将不胜感激,谢谢。

可能是重复的问题:https://dev59.com/42w15IYBdhLWcg3wYasx - Varit J Patel
你想要移除 <nav></nav> 吗? - Ronak Patel
@LijnJohn,现在我的回答是否符合您的需求? - Marko Mackic
@MarkoMackic .... 是的!!! 感谢你的帮助。 - Lijin Durairaj
2个回答

5
使用以下方法,所有事件绑定都会保留不变。
$('#parent-conatiner').parentsUntil('body').replaceWith($('#parent-conatiner'));

还没有尝试过,但你有任何想法为什么它不起作用吗? - Shintu Joseph
如果您删除父元素,则会将其包含的子元素一并删除。 - Marko Mackic
我使用了.parents().remove(),但它删除了包括 #parent-container div 在内的所有 div,请参考以下 Fiddle 示例:https://jsfiddle.net/lijin_john/0oa8wdba/ - Lijin Durairaj
逻辑上,因为当你移除 div 元素时,它的所有内容也会被移除。 - Marko Mackic
为什么不试试prevAll(),就像@MarkoMackic回答的那样。 - Shintu Joseph

0

使用jQuery的unwrap()函数

或者使用克隆方法和事件委托来操作Kendo控件

另一个解决方案是:

$('body').append($('#parent-conatiner'));
$('body div:last').prevAll().remove();

但这应该是与克隆相同的问题

另一个选项是detach()

var el = $('#parent-conatiner').detach();
$('body').empty().append(el);

unwarp()仅删除父div,基本上我想删除#parent-container的所有父div,直到body元素。 - Lijin Durairaj
使用它多次 - madalinivascu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接