2017-02-28 176 views
0

所以我有一个列表div我display'd使用jquery append。在每个列表中,我添加了一个id,每当我添加一个输入字段时,数字会增加,当我删除它时,只会删除我希望删除的数字,但我如何才能将此数字列表重新排序? 类似于1,2,3,4(我删除2)= 1,3,4,=错误 更像1,2,3,4(删除2),1,2,3等我怎样才能得到我的追加()列表,回来? jQuery

CODE:

$(document).ready(function(){ 
    var i = 1; 
    $("#lisa").click(function(){ 
     i++; 
     $(".voit").append('<div class="input-group rem'+i+'"><div class="input-group-addon ees">'+i+'. Koht</div><input type="text" name="voitj' + i + '" class="form-control" placeholder="Võitja auhind"/><div class="input-group-addon"><span id="'+i+'" class="glyphicon glyphicon-minus remove"></span></div></div>'); 
    }); 

    $(document).on('click', '.remove', function(){ 
     var id = $(this).attr('id'); 
    }); 
}); 

这里的jfiddle https://jsfiddle.net/0wbzpumt/2/

并且还,我怎么能设置最大附加字段?就像我不想要超过5个输入字段一样,我该如何做到这一点。

在此先感谢! :D

+0

您需要再次遍历数组并重新分配数字。 –

回答

0

这是一个算法问题。你需要更好地思考一下。 您的代码不可维护,并且存在一些问题。

您在页面上保持共享状态。你将如何跟踪你的网页或整个应用程序的这种状态?将数据库挂接到此前端时会发生什么?

什么是.rem+id?你正在使用类作为标识符。还有其他方法可以做到这一点(例如id)。数据标签也可以使用。

您需要将同一对象中的所有逻辑进行捆绑。然后,改变标记,业务逻辑或转向新的前端框架将不会那么痛苦。 您的条目代表一个领域的现实。你应该保留这些的集合(可能在一个数组或对象中)。他们有一个唯一的标识符和一个生成HTML标记的渲染方法。当你移除一个元素时,你只需要重新渲染已更改的标记。

0

在您的删除功能,只需通过具有要更新的数量和分配基础上的循环索引值每格循环:

$(document).on('click', '.remove', function(){ 
var id = $(this).attr('id'); 
$('.rem'+id+'').remove(); 
$.each($('.input-group-addon.ees'), function(index, value) { 
    if(index > 0) {   
     $(value).text(index); 
    } 
}); 

});

Updated fiddle

注意,如果你需要,你可以更新其他价值以及在这个循环中像你remX类号为好。

EDIT 将i的值重置为输入的数量,以便将来的添加显示正确的ID值。

+0

你应该检查当我删除并添加新的输入字段会发生什么:D Id正在增加:D但是,感谢寿。 – drpzz

+0

好点,我是一个匆忙。我在每次删除后添加了一个简单的Id重置,以便它不会失控。减1值是为了解释第一个文本框“事件ID”。 – Daniel