在 div 中分离元素并追加而不相乘

Detaching element and append without multiply in div

我想分离或克隆我 html 中的 a 标签。 我无法更改结构,因为我使用了页面构建器。 如果我有两个元素,就好像 a 标签被插入了两次。如果我有三个元素,它会显示三次。

我有这个:

<div class="wrapper">
    <div class="element">
        <div class="container">
            <h4>Headline</h4>
            <a href="#"></a>
        </div>
    </div>
    <div class="element">
        <div class="container">
            <h4>Headline</h4>
            <a href="#"></a>
        </div>
    </div>
</div>

我想要这个:

<div class="wrapper">
    <div class="element">
        <a href="#"></a>
        <div class="container">
            <h4>Headline</h4>
            <a href="#"></a>
        </div>
    </div>
    <div class="element">
        <a href="#"></a>
        <div class="container">
            <h4>Headline</h4>
            <a href="#"></a>
        </div>
    </div>
</div>

但我明白了:

<div class="wrapper">
    <div class="element">
        <a href="#"></a>
        <a href="#"></a>
        <div class="container">
            <h4>Headline</h4>
            <a href="#"></a>
        </div>
    </div>
    <div class="element">
        <a href="#"></a>
        <a href="#"></a>
        <div class="container">
            <h4>Headline</h4>
            <a href="#"></a>
        </div>
    </div>
</div>

//我的jQuery

$('.element .container a').clone().prependTo('.element');

$('.element') 匹配这两个 div,因此每个克隆链接都附加到它们。

避免不需要的重复的一种方法是具体说明 .element 每个克隆节点应附加到:

$('.element .container a').each(function() {
  $(this).clone().prependTo(
    $(this).closest('.element')
  )
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="wrapper">
  <div class="element">
    <div class="container">
      <h4>Headline</h4>
      <a href="#"></a>
    </div>
  </div>
  <div class="element">
    <div class="container">
      <h4>Headline</h4>
      <a href="#"></a>
    </div>
  </div>
</div>