【问题标题】:Create clone on another function with jquery使用 jquery 在另一个函数上创建克隆
【发布时间】:2021-07-29 13:44:47
【问题描述】:

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

$('.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 添加什么代码?

【问题讨论】:

标签: javascript html jquery clone


【解决方案1】:

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

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

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

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

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

在这个工作的 sn-p 中看到这里:

$(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>

【讨论】:

    【解决方案2】:

    克隆后必须再次设置事件。 然后,您可以将事件回调声明为一个函数,并在克隆元素后再次设置事件,如下所示:

    function appendShowButton() {
        alert('Hi');
        $('.box .btn').remove();
        var newEl = $('.btn').clone().appendTo('.box');
        newEl.on('click', appendShowButton);
        return false;
    }
    
    $('.btn').on("click", appendShowButton);
    

    【讨论】:

      猜你喜欢
      • 2023-04-06
      • 1970-01-01
      • 2012-09-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多