Javascript 如何动态复制转换为select2.js的select标记?

Javascript 如何动态复制转换为select2.js的select标记?,javascript,html,jquery-select2,Javascript,Html,Jquery Select2,我正在尝试在我的项目中使用 在下面的屏幕截图中,我想在用户单击“添加更多”按钮后动态复制社交媒体部分(包括select2、input和remove btn): 为避免冲突,我在单击事件开始时为所有select2调用destroy事件。然后,我将复制元素。然后,我将重新初始化选择2。但是,它总是将一个select转换为select2 在以下屏幕截图中,您可以看到重复的选择未转换为select2: 以下代码片段显示了该问题: 复制品 阿拉巴马州 怀俄明州 $(文档).ready(函数(){

我正在尝试在我的项目中使用

在下面的屏幕截图中,我想在用户单击“添加更多”按钮后动态复制社交媒体部分(包括
select2
input
remove btn
):

为避免冲突,我在单击事件开始时为所有
select2
调用
destroy
事件。然后,我将复制元素。然后,我将重新初始化
选择2
。但是,它总是将一个select转换为
select2

在以下屏幕截图中,您可以看到重复的选择未转换为
select2

以下代码片段显示了该问题:


复制品


阿拉巴马州 怀俄明州 $(文档).ready(函数(){ $('.selection')。选择2(); }); 函数重复\u选择() { //销毁所有活动select2 $(“.selection”)。每个(函数(索引、值){ var temp_selecte2=$(值).select2(); 临时选择2。选择2(‘销毁’); }); //获取要复制的第一个选择节点 var first_node=$('.selection').first().prop('outerHTML'); //将新节点添加到主体中 $('body').append(第一个_节点); //重新初始化所有select2 $(“.selection”)。每个(函数(索引、值){ var temp=$(值)。选择2(); //temp.select2(); }); //以下代码也不起作用 //$(“.selection”).select2(); }
出现此问题是因为
Select2
要求select标记是唯一的,
Select2()
方法通过使用名为
data-Select2-id
的属性来识别这一点,您只需修改该属性

您的问题可以通过删除属性或设置唯一属性来解决。要设置唯一属性,只需添加行
temp.attr('data-select2-id',new Date().getTime())
,但建议的方法是删除它
temp.removeAttr('data-select2-id')


复制品


阿拉巴马州 怀俄明州 $(文档).ready(函数(){ $('.selection')。选择2(); }); 函数重复\u选择() { //销毁所有活动select2 $(“.selection”)。每个(函数(索引、值){ var temp_selecte2=$(值).select2(); 临时选择2。选择2(‘销毁’); }); //获取要复制的第一个选择节点 var first_node=$('.selection').first().prop('outerHTML'); //将新节点添加到主体中 $('body').append(第一个_节点); //重新初始化所有select2 $(“.selection”)。每个(函数(索引、值){ 变量温度=$(值); 临时删除TTR('data-select2-id');
//temp.attr('data-select2-id',new Date().getTime());//这可能会有帮助,谢谢@JuanCastillo,但没有帮助。特别是因为这里我想复制一个exist select2,但在那里他想添加新的DOM作为select2@RezaAmya,我的答案解决了你的问题吗?@LuisLimas是的,它解决了问题,谢谢(当然,我使用了您当前的方式(删除属性),而不是用新的日期时间替换)