Javascript 如何为Select2对象重用ID和名称
我有一个大表,每行有一个Select2对象,它们都有一个对应的ID,其中包含它们所在行的编号。(它们也有相同的名称)(fmselection1,fmselection2,…) 每当用户删除一行时(例如,使用Select2对象“fmselection2”),我希望所有后续Select2对象减少其ID和名称:Javascript 如何为Select2对象重用ID和名称,javascript,jquery-select2,Javascript,Jquery Select2,我有一个大表,每行有一个Select2对象,它们都有一个对应的ID,其中包含它们所在行的编号。(它们也有相同的名称)(fmselection1,fmselection2,…) 每当用户删除一行时(例如,使用Select2对象“fmselection2”),我希望所有后续Select2对象减少其ID和名称: fmselection3->fmselection2 fmselection4->fmselection3 这是通过重新分配属性来完成的: $('#fmselection'+i).attr(
fmselection3->fmselection2
fmselection4->fmselection3
这是通过重新分配属性来完成的:
$('#fmselection'+i).attr('id', 'fmselection'+(i-1));
$('#fmselection'+(i-1)).attr('name', 'fmselection'+(i-1));
这似乎是可行的,但一旦新行再次添加并使用
$('#fmselection'+newID).select2();
曾经使用newID
的Select2对象突然失去了Select2外观,其行为再次类似于普通的HTML select
我的问题是:
Select2是否支持“重新分配”ID和名称?我的问题的答案是否,在尝试了几个小时的不同方式(也包括先选择(“销毁”)然后重新激活)后,重新分配一个正式使用的ID在IE和Chrome中都不起作用
我遵循Scott Marcus的方法,试图避免ID编号的必要性,这最终完全避免了重新分配。我认为你首先应该问问自己,你使用
ID
的目的是什么。如您所见,使用id
s可以创建需要修复的脆弱代码,就像您正在寻找的代码一样。除了为元素分配唯一的id
s之外,还有许多其他方法可以定位元素并与之交互。您应该避免使用id
,最好使用数据属性,例如data id=“3”
等。然后,当您想要删除并获取值时,可以使用jQuery函数data()
获取值,如$(选择器).data('id')代码>@penleychan这并不能真正解决问题。它只会将其移动到另一个属性。更大的问题是为什么这里首先需要唯一标识符。@penleychan这可能会解决我的问题。我将改为使用专用数据属性,看看它是否有效,然后返回。