2017-02-28 98 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