首页 > 解决方案 > 使用 jquery 在另一个函数上创建克隆

问题描述

当我单击“显示”时,它会显示一条消息“嗨”,但是当我单击下一个选项“显示”时,它不会显示一条消息。

$('.btn').on("click", function () {
    alert('Hi');
    $('.box .btn').remove();
    $('.btn').clone().appendTo('.box'); 
    return false;
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="btn">ShoW</div>
<div class="box"></div>

我应该为 JS 添加什么代码?

标签: javascripthtmljqueryclone

解决方案


这是因为您创建的事件处理程序绑定到创建时存在的对象:

$('.btn').on("click", function () {

这仅.btn适用于在这行代码运行时已经可用的元素 - 它不会再次由 jQuery 评估。

相反,使用这种格式来绑定事件,它将获取动态创建的元素:

$(document).on('click', '.btn', function () {

在这个工作片段中看到这里:

$(document).on('click', '.btn', function () {
    alert('Hi');
    $('.box .btn').remove();
    $('.btn').clone().appendTo('.box'); 
    return false;
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="btn">ShoW</div>
<div class="box"></div>


推荐阅读