jQuery разворачивает удаление более одного родителя

У меня есть такая структура html

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

Два div внутри aside имеют классы и дочерние элементы, но ради вопроса вам не нужно знать, что они собой представляют. Когда 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() для получения двух div внутри .wrapping-div, я создаю этот div, добавляю его в DOM внутри aside, а затем добавляю два внутренних div к этому новому элементу, который я создал.

Когда я пытаюсь развернуть() эти два элемента div, оба .wrapping-div и .l-region--sidebar-first удаляются из DOM. JS, чтобы развернуть элементы ниже.

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

Я думал, что unwrap() должен был удалить одного родителя. Почему он удаляет оба, и кто-нибудь знает, как я могу это остановить?

Ваше здоровье.


person Mark Weston    schedule 11.09.2013    source источник
comment
Покажите свой JS тоже, пожалуйста.   -  person Jakub Michálek    schedule 11.09.2013
comment
ура @JakubMichálek   -  person Mark Weston    schedule 11.09.2013


Ответы (2)


ваш код действительно работает так, как ожидается. Как и в первом экземпляре $('.inner-div-one').unwrap(); вы удаляете родительский div, а во втором случае вы удаляете боковой тег. На самом деле это удаление только одного родителя за раз. Я думаю, вам не нужно второе утверждение там.

person Ganesh Pandhere    schedule 11.09.2013
comment
Интересно, что unwrap удаляет только одного родителя, даже если в выборе есть несколько дочерних элементов. например, $('.wrapping-div div').unwrap() удаляет только один. Я думал, что мне нужно быть осторожным, чтобы выбрать только одного ребенка, но, видимо, нет. Вероятно, он делает что-то вроде развертывания набора родителей, поэтому, если они имеют общий родитель, он вызывается только один раз для этого родителя. - person goodeye; 07.07.2014

Ну это как я и думал. Вы вызываете unwrap дважды, вот и все.

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

достаточно, потому что in разворачивает их обоих.

person Jakub Michálek    schedule 11.09.2013