jQuery: удалить элемент, кроме внутреннего элемента

#jquery #dom-manipulation

#jquery #dom-манипуляция

Вопрос:

Есть ли какой-либо способ удалить элемент, кроме как внутри элемента:

 <div class="gallery">
  <a href="images/rep.png" title="rep">
    <img src="http://example.com/uploads/rep.png" class="thumbnail" alt="rep" title="rep">
  </a>
</div>
  

Для

 <div class="gallery">
  <img src="http://example.com/uploads/rep.png" class="thumbnail" alt="rep" title="rep">
</div>
  

Я написал этот код, но не работает:

 $(".gallery").contents().filter(".thumbnail").remove();
  

Ответ №1:

В jQuery есть unwrap() метод, который удаляет родительский узел и оставляет соответствующий элемент на месте:

 $(".gallery").contents().filter(".thumbnail").unwrap();

// or (faster)
$(".gallery .thumbnail").unwrap();
  

Комментарии:

1. Или $(".gallery .thumbnail").unwrap();

Ответ №2:

 $(".thumbnail").unwrap()
  

http://api.jquery.com/unwrap/

Ответ №3:

Может быть более простым методом, но:

 $('.gallery').each( function() {

    var img = $(this).find('img');
    $(this).children("a").remove();

    $(this).append(img);

});
  

Ответ №4:

попробуйте

 innerhtml = $("div.gallery .thumbnail").get();
$("div.gallery").html(innerhtml);