логика нумерации флажков списка задач

0

Я хочу создать список todo с добавлением и отмечать как завершенную функцию. Элемент li должен быть уникальным, потому что я использовал label for each checkbox on each li.

то я использую $('ul li').length + 1; установить ярлык для идентификатора. поэтому каждый флажок уникален.

проблема в том, что я использовал remove() когда флажок установлен. он разрушил нумерацию. например, I have 1,2,3 and я checked 1,2 then я add a new item, этот элемент будет иметь ID 3, что является столкновением. Любое решение?

  • 2
    показывая нам скрипку было бы лучше помочь
  • 0
    вместо установки идентификатора, используя длину, установите идентификатор как что-то вроде todo-3 и отделите последний на «-», конвертируйте в int, увеличивайте и устанавливайте как id
Теги:

2 ответа

1
Лучший ответ

Не рассчитывайте на их количество, чтобы получить уникальные идентификаторы. Вот функция, которая возвращает уникальный идентификатор каждый раз, когда он вызывается:

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++;
  };
}();
  • 0
    Я думаю, что глобальная переменная и и счетчик переменной ++ после создания элемента будет делать?
  • 0
    Конечно, это идея. Я считаю, что функция более понятна, поэтому вы не можете путать назначение переменной.
0

Предполагая, что у вас есть класс во всех меток, почему бы просто не использовать parseInt($('.label-class').last().text()) + 1? Хотя я согласен с другими плакатами в том, что это, вероятно, не чистое, универсальное решение... возможно, оно достаточно хорошо звучит.

Если вы не получите ответ, который вы ищете, попробуйте добавить более подробные сведения к вопросу. Не понятно, что вы просите.

  • 0
    2 уже дали ответ, спасибо!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню