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是的,它解决了问题,谢谢(当然,我使用了您当前的方式(删除属性),而不是用新的日期时间替换)