You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Select2 v4.0.13版本克隆下拉元素失效及报错问题求助

问题:Select2 v4.0.13克隆下拉框后功能失效,原有元素无法重新初始化

我需要实现的功能在Stack Overflow已有讨论,对应的代码在Select2 v3.3.2版本可正常运行,但在当前稳定版v4.0.13中失效。我基于该代码做了两个版本的示例:v3.3.2版本可用,v4.0.13版本失效。

我的场景是:表格每行包含一个Select2下拉框,初始仅一行,点击“Add”按钮可添加新行。点击按钮时执行以下代码,创建新行后克隆原有Select2元素到新行第二列:

$("#add-cust").click(function () {
        let table = document.getElementById("job-customers");
        let last_customer = parseInt(table.tBodies[0].rows.length, 10);
        let new_customer = last_customer+1;
        var row = table.insertRow(-1);
        row.setAttribute('id', 'row-customer-'+new_customer);
        row.setAttribute('class', 'customer');
        let cell1 = row.insertCell(-1);
        let cell2 = row.insertCell(1); 
        cell1.innerText = new_customer;

        //LOOP ROWS IN TBODY COL2 & DESTROY SELECT2 ELEMENTS
        $("#job-customers").find("tbody td:nth-child(2)").each(function () {
            $(this).children("select")
            .select2("destroy")
            .end();
        });
        //CLONE & APPEND
        $("#row-customer-" + last_customer + " td:nth-child(2)")
           .children("select").clone()
           .appendTo(cell2);
        $('.select2').select2();
    });

针对这个场景我也做了对应示例:v3.3.2版本可用,v4.0.13版本失效。

在v4.0.13版本中,点击“Add”后新行插入且Select2元素被克隆,但原有行的元素失效;再次点击则所有Select2功能失效,并报错:

The select2('destroy') method was called on an element that is not using Select2.

我推测这与v4.0.13版本在DOM中创建Select2元素的方式有关,但不确定。代码$('.select2').select2();似乎无法重新初始化已销毁的Select2元素,尝试多种选择器均无效,也未在v4版本发布说明中找到相关内容,恳请协助排查解决该问题。

内容的提问来源于stack exchange,提问作者B4THC4T

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 13:47:41