使用append()移动DOM元素?

时间:2011-11-24 20:45:09

标签: jquery appendto

我有一个div元素,如

<div id="move">Something</div>

...我想在DOM中将移动从一个位置移动到另一个位置。我可以使用appendTo()执行此操作,如下所示:

$('#move').fadeOut(500, function() {
   $(this).appendTo('#another-container').fadeIn(500);
});

......还是会复制它?

如果它被复制,那么DOM中将有两个具有相同id的元素。我怎么能避免这个?

3 个答案:

答案 0 :(得分:13)

是的,appendTo方法从DOM树中移动元素。如果要复制元素,则使用.clone()

示例:

Body:   <div>
           <a>Test</a>
        </div>
        <span></span>
jQuery code:
   $("a").appendTo("span");

After:  <div></div>
        <span>
           <a>Test</a>
        </span>

答案 1 :(得分:4)

我是直接从jQuery文档http://api.jquery.com/append/

中获取的
$( ".container" ).append( $( "h2" ) );

&#34;如果以这种方式选择的元素被插入到DOM中其他位置的单个位置,它将被移动到目标中(未克隆):&#34;

答案 2 :(得分:0)

您可以使用.append.after或类似方法执行此操作。

<ul class="list1">
  <li>You wanted to move this element!</li>
  <li>Element 2</li>
  <li>Element 3</li>
</ul>

<ul class="list2">
  <li></li>
  <li>Element 2</li>
  <li>Element 3</li>
</ul>

<button onclick="moveIt()">Move element</button>

因此,将第一个.li.list1移至.list2的代码将为:

function moveIt() {
  var elementToBeMoved = $(".list1 li:first");
  $(".list2 li:first").append(elementToBeMoved);
}

Working pen