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


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

<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();
4 3

4 ответа:

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

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

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

Http://api.jquery.com/unwrap/

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

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

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

    $(this).append(img);

});

Попробуйте

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