我想创建一个带有添加和标记为完成功能的待办事项列表。 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,这是一个冲突。有解决方案吗
答案 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
?虽然我同意其他海报,但这可能不是一个干净,通用的解决方案......它的声音可能已经足够好了。
如果您没有找到所需的答案,请尝试在问题中添加更多详细信息。目前尚不清楚你在问什么。