Клонировать элемент X раз, используя jQuery - PullRequest
1 голос
/ 14 июля 2020

Я пытаюсь клонировать 50 раз за клик. Как мне это сделать?

Это мой скрипт.

$(document).ready(function() {
  $("button").click(function() {

  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<p>This is a paragraph.</p>


<button>Clone all p elements, and append them to the body element</button>

Ответы [ 2 ]

1 голос
/ 14 июля 2020

Клонировать ОДИН РАЗ и добавить ОДИН РАЗ!

ПРИМЕЧАНИЕ: Я прочитал ваши требования как «Клонировать 50 раз за клик»

$(function() {
  $("button").on("click", function(e) {
    e.preventDefault(); // cancel click or make type="button"
    const clones = new Array(50);
    // Cloning ONCE and saving the output as string
    const html = $("p").map(function() { return this.cloneNode(true).outerHTML }).get().join("");
    // fill the array of HTML
    clones.fill(html)
    $("body").append(clones.join("")); // append ONCE
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<p>This is a paragraph.</p>
<p>This is another paragraph.</p>


<button>Clone all p elements, and append them to the body element</button>

Для клонирования по щелчку вы можете использовать шаблон

Обратите внимание, я поставил счетчик на кнопку

$(function() {
  $("button").on("click", function(e) {
    e.preventDefault(); // cancel click or make type="button"
    let times = +$(this).data("times"); // get a counter
    if (times > 5) return
    const html = $("template").contents().clone(true);
    $("body").append(html); // append ONCE
    $(this).data("times",++times);
  }).click()
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<template>
  <p>This is a paragraph.</p>
  <p>This is another paragraph.</p>
</template>

<button data-times="1">Clone all p elements, and append them to the body element</button>
1 голос
/ 14 июля 2020

Вы можете использовать функцию clone () jquery для клонирования и appendTo функцию clone после ранее клонированного элемента ЗА НАЖАТИЕ

Выполните фрагмент ниже, чтобы увидеть, как он работает.

$(document).ready(function() {
  $("button").click(function() {
    var e = $('p');
    if (e.length != 50) {
      $('p:first').clone().appendTo('#container');
    } else {
      console.log('You have reached limit of 50')
    }
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<body>

  <p>This is a paragraph.</p>


  <div id="container"></div>


  <button>Clone all p elements, and append them to the body element</button>

</body>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...