javascript - 使用 jQuery/Javascript 单击时创建同一 Div 的多个随机实例?

标签 javascript html jquery css

我正在尝试创建一个场景,单击页面上的某些内容,然后 h1 将出现在随机位置。但是,我希望第一个 h1 保持在原位,而另一个 h1 出现在另一个随机位置,依此类推。如果连续单击该按钮,页面将充满相同的 h1 标签。几乎就像 Windows 融化并“弹出”大量相同的弹出窗口一样,您必须单击才能摆脱它们。我自己尝试通过搜索其他问题来做到这一点,但是当尝试根据其他用户的问题和答案进行调整时,代码变得非常复杂。

到目前为止,我已经成功地让 h1 标签在页面上随机移动。我还设法让它克隆 h1.然而,目前它全部保留在一个长列表中(除了原始实例),而不是像我希望的那样在每个实例处停止。

我见过许多不同版本的创建随机部分的方法,因此我完全愿意接受任何想法或全新的代码来使其正常工作。

{
  $(document).ready(function () {
    $(".btn").click(function () {
    var bodyWidth = document.body.clientWidth;
    var bodyHeight = document.body.clientHeight;
    var randPosX = Math.floor(Math.random() * bodyWidth);
    var randPosY = Math.floor(Math.random() * bodyHeight);
 $(".words").clone().appendTo("body");
    $(".words").css("left", randPosX);
    $(".words").css("top", randPosY);
  });
  });
}
body {
  margin: 0;
  padding: 0;
  background-color: white;
}

.words {
  position: relative;
  color: black;
  font-size: 20px;
  left: 0;
  top: 0;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<body>
  <h1 class="words">
  Hello!
  </h1>
  <button class="btn" type="button">Click Me!</button>
</body>

https://jsfiddle.net/ynaj45m6/33/#&togetherjs=F9Vjsf1Uij

最佳答案

您的代码中有两个问题。首先,$('.words') 选择所有 h1 元素,因此当您更新它们的 css() 时,您将移动每个元素其中之一。相反,保留对克隆元素的引用并仅移动该元素。

类似地,如果您只想每次点击克隆一个实例,则只需选择一个 .words 元素,而不是全部,并且 :first 可以是用于此。试试这个:

jQuery($ => {
  $(".btn").click(function() {
    let bodyWidth = document.body.clientWidth;
    let bodyHeight = document.body.clientHeight;
    let randPosX = Math.floor(Math.random() * bodyWidth);
    let randPosY = Math.floor(Math.random() * bodyHeight);

    let $clone = $(".words:first").clone().appendTo("body");
    $clone.css({
      left: randPosX,
      top: randPosY
    });
  });
});
body {
  margin: 0;
  padding: 0;
  background-color: white;
}

.words {
  position: relative;
  color: black;
  font-size: 20px;
  left: 0;
  top: 0;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<h1 class="words">
  Hello!
</h1>
<button class="btn" type="button">Click Me!</button>

关于javascript - 使用 jQuery/Javascript 单击时创建同一 Div 的多个随机实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66458431/

相关文章:

jquery empty() 不会清除 div 内容

jquery - 使 jQuery Fadeout() 回调函数同步

javascript - 一个页面上同一 javascript 类的两个实例引用同一实例

javascript - 重复函数导致模态标题

javascript - Gulp 调试 - 管道到 process.stdout 给出 TypeError ('invalid data' )

html - IE9 的 CSS 圆 Angular 问题

html - PNG图像在网站上不透明,无法找出原因

javascript - 从文本区域获取统计信息

html - 为什么会存在 ID?

javascript - 使用输入类型文件提交 Ajax 表单