jQuery将节点移出其父节点

时间:2011-06-17 09:40:30

标签: javascript jquery html prepend

我有这段代码:

<ul class="list">
  <li>
    <a href="#" >
      <img src="IMAGE" />
      SOME TEXT
    </a>
  </li>
  <li>
    <a href="#" >
      <img src="ANOTHER IMAGE" />
      SOME DIFFERENT TEXT
    </a>
  </li>
</ul>

我想将图像预先添加到父节点,如下所示:

<ul class="list">
  <li>
    <img src="IMAGE" />
    <a href="#" >
      SOME TEXT
    </a>
  </li>
  <li>
    <img src="ANOTHER IMAGE" />
    <a href="#" >
      SOME DIFFERENT TEXT
    </a>
  </li>
</ul>

3 个答案:

答案 0 :(得分:20)

试试这个:

$('.list > li > a > img').each(function() {
    $(this).insertBefore($(this).parent());
})

http://jsfiddle.net/alnitak/3nEVz/

演示

编辑我提出了一个更清洁的版本:

$('.list > li > a > img').each(function() {
    $(this).parent().before(this);
})

答案 1 :(得分:3)

$('ul.list img').each(function(_, elem) {
    var $elem = $(elem);
    $elem.prependTo( $elem.closest('li') );
});

演示http://jsfiddle.net/hPbZD/1/

答案 2 :(得分:1)

试试这个:

$(function() {
    $('ul.list > li > a > img').each(function() {
      $(this).closest('li').prepend(this);
    });
});

在行动here中查看。