待办事项列表复选框编号逻辑

时间:2013-11-11 09:08:41

标签: javascript jquery

我想创建一个带有添加和标记为完成功能的待办事项列表。 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,这是一个冲突。有解决方案吗

2 个答案:

答案 0 :(得分: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++;
  };
}();

答案 1 :(得分:0)

假设您在所有复选框标签上都有一些课程,为什么不使用parseInt($('.label-class').last().text()) + 1?虽然我同意其他海报,但这可能不是一个干净,通用的解决方案......它的声音可能已经足够好了。

如果您没有找到所需的答案,请尝试在问题中添加更多详细信息。目前尚不清楚你在问什么。