【问题标题】:jQuery unwrap removing more than one parentjQuery unwrap 移除多个父级
【发布时间】:2013-09-15 05:42:30
【问题描述】:

我有一个这样的html结构

<aside class="l-region l-region--sidebar-first">
  <div></div>
  <div></div>
</aside>

side 中的两个 div 确实有类和子元素,但为了这个问题,您不需要知道它们是什么。准备好 DOM 后,我将两个内部 div 包装在一个新的 div 中,就像这样

<aside class="l-region l-region--sidebar-first">
  <div class"wrapping-div">  
    <div class="inner-div-one"></div>
    <div class="inner-div-two"></div>
  </div>
</aside>

我不使用 wrap() 函数来获取 .wrapping-div 中的两个 div,我创建了该 div,将其附加到 side 内的 DOM,然后将两个内部 div 附加到我创建的新元素.

当我尝试 unwrap() 这两个 div 时,.wrapping-div 和 .l-region--sidebar-first 都会从 DOM 中删除。 JS 解包下面的元素。

$(function() {
  $('.inner-div-one').unwrap();
  $('.inner-div-two').unwrap();
});

我认为 unwrap() 应该删除一个父级。为什么要同时删除两者,有人知道我该如何阻止吗?

干杯。

【问题讨论】:

  • 请也展示你的JS。
  • 干杯@JakubMichálek

标签: jquery html dom unwarp


【解决方案1】:

嗯,和我想的一样。您拨打unwrap 两次,仅此而已。

$(function() {
    $('.inner-div-one').unwrap();
});

就足够了,因为 in 解开了它们。

【讨论】:

    【解决方案2】:

    您的代码实际上正在按预期工作。作为 $('.inner-div-one').unwrap(); 的第一个实例您正在删除父 div,并且在第二个实例中您正在删除旁边的标签。它实际上一次只删除一个父级。我认为您不需要那里的第二个语句。

    【讨论】:

    • 有趣的是,即使选择中有多个孩子,展开也只会删除一个父母。例如,$('.wrapping-div div').unwrap() 只删除一个。我想我必须小心只选择一个孩子,但显然不是。它可能正在做一些事情,比如让一组父母打开包装,所以如果他们共享一个父母,它只会为那个父母调用一次。
    猜你喜欢
    • 2019-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-22
    • 2011-01-04
    • 2021-12-26
    • 1970-01-01
    相关资源
    最近更新 更多