我正在创建一个动态表单。当我单击“删除”按钮时,我希望重新索引元素。例如,如果我创建5个元素items1,items2,items3,items4,items5和I删除items3,我希望其他四个元素从1到4重新索引,如items1,item2,item3,item4。
这是我的代码:
jQuery(document).on("ready", function() {
initAddRows();
});
function initAddRows() {
var template = jQuery("#template"),
dataRows = jQuery("#dataRows")
jQuery("#btnAdd").on("click", function() {
var newRow = template.clone(true, true),
fieldRows = dataRows.find(".fieldRow"),
rowNumber = fieldRows.length + 1;
newRow.attr('id', 'row' + rowNumber).find('[id]').each(function() {
jQuery(this).attr("id", jQuery(this).attr("id") + rowNumber);
jQuery(this).attr("name", jQuery(this).attr("name") + rowNumber);
$('#itemscounter').val(+rowNumber);
});
fieldRows.filter(":last").after(newRow);
});
dataRows.on("click", ".remove", function() {
jQuery(this).parent().remove();
});
}
这是我的HTML代码:
<select id="items" class="items" style="width:127px; float:left;" name="items">
<select id="items2" class="items" style="width:127px; float:left;" name="items2">
<select id="items3" class="items" style="width:127px; float:left;" name="items3">
<select id="items4" class="items" style="width:127px; float:left;" name="items4">
<select id="items5" class="items" style="width:127px; float:left;" name="items5">
答案 0 :(得分:2)
试试这个:
jQuery('select.items').each(function(index){
this.id = 'items' + index + 1;
this.setAttribute("name",this.id);
});
答案 1 :(得分:1)
您可以通过设置at at attr
来完成此操作$('select.items').each(function(index){
if ($(this).attr("id") != 'items') {
$(this).attr("id","items" + (index + 1));
}
});
答案 2 :(得分:0)
你可以这样做:
$('.items').attr('id', function (index, oldID) {
return 'items' + (parseInt(index, 10) + 1);
}).attr('name', function (index, oldName) {
return 'items' + (parseInt(index, 10) + 1);
});