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
相关产品推荐
相关产品推荐

