0

追加機能と完了マーク付きの todo リストを作成したいと考えています。私が使用したので、liアイテムはユニークでなければなりませんlabel for each checkbox on each li

次に$('ul li').length + 1;、IDのラベルを設定するために使用します。したがって、各チェックボックスは一意です。

問題はremove()、チェックボックスがチェックされているときに使用されることです。それは番号付けを台無しにしました。たとえばI have 1,2,3 and I checked 1,2 then I add a new item、そのアイテムの ID は 3 で、これはクラッシュです。解決策はありますか?

4

2 に答える 2

1

一意の ID を取得するためにそれらのカウントに依存しないでください。呼び出されるたびに一意の ID を返す関数を次に示します。

function getUid(prefix) {
  return prefix + '_' +  getUid.count++;
}
getUid.count = 0;


console.log(getUid('checkbox')); // checkbox_0
console.log(getUid('checkbox')); // checkbox_1
console.log(getUid('checkbox')); // checkbox_2
console.log(getUid('checkbox')); // checkbox_3
console.log(getUid('li')); // li_4

本当に安全な解決策 (プライベート変数):

var getUid = function() {
  var count = 0;
  return function(prefix) {
    return prefix + '_' +  count++;
  };
}();
于 2013-11-11T09:15:41.677 に答える