Пересортируйте элементы списка на основе определенного значения элемента и положения с помощью jQuery - PullRequest
0 голосов
/ 05 июня 2018

Хорошо, у меня есть LI, скажем, с 15 предметами.Это относится к предыдущему вопросу , который я задал здесь

Ну, я понял эту часть по большей части.Но сейчас они хотят, чтобы, когда я нажимал на флажок элемента, он динамически перемещался в «начало» списка позади других отмеченных элементов.

Другими словами, сначала, когда элементы не отмеченыони просто в любом порядке, который соответствует БД.Но если вы нажмете «замок» на 5-м, например, его следует проверить и автоматически переместиться на 1-ю позицию в списке.Итак, если они нажимают «замок» на 7-м, он должен переместиться на 2-ю позицию в списке и т. Д.

Каждый элемент в LI имеет свой уникальный идентификатор, поэтому я неНе думаю, что это будет проблемой.Я просто не уверен, как это сделать в jQuery.

Для каждого запроса у меня есть текущий код, который у меня есть (насколько я знаю):

var checkedPos = 0;
$('input[id^="theId"]').on('click',
  function() {
    var theId = this.id.slice(5);
    var chkVal = this.checked;
    var suppId = <%= Request.QueryString["pid"]%>;

    if (chkVal === true) {
      updateRecordLock(theId, suppId, chkVal, checkedPos);
      checkedPos++;
      $("#" + theId).removeClass("sortable");
    } else {
      checkedPos--;
      updateRecordLock(theId, suppId, chkVal, null);
      $("#" + theId).addClass("sortable");
    }
  });

Я хочу сделать следующее:

  1. Если это первый проверенный элемент, он попадает в начало списка.
  2. Если уже проверен какой-либо элемент (или элементы), проверенный элемент переходит к end из отмеченных элементов.
  3. Если пользователь снимает отметку проверенный элемент, он идет до самого конца проверенного списка, но не отмечен.

1 Ответ

0 голосов
/ 08 июня 2018

Хорошо, я решил вернуться со своим решением.

Сначала я начал делать это:

var checkedPos = $('input[id^="theId"]:checked').length;

Это дало мне счет изколичество элементов, которые уже были проверены.

затем, внутри своего события click, я выполнил приведенный выше код из своего исходного поста. За исключением того, что я добавил "index" к условию, что я либо сделал +1, либо -1, чтобы получить правильное значение индекса.

Затем в конце я сделал что-то вроде этого:

$("#" + theId).insertAfter("#myList li:nth-child(" + index + ")");

, что позволило мне «переупорядочить» список, поместивпроверил один на новую позицию, не обновляя страницу.

...