В js ни бум-бум еще и сейчас делаю страницу, на которой понадобилось, чтобы при нажатии на стрелку "вверх" или "вниз" заказ поднимался выше или ниже на 1 строку соответственно.
Грубо говоря это должно быть так при каждом нажатии на кнопку (вверх или вниз) пока блок не займёт крайнюю позицию в том направлении куда его двигали:
блок 1
блок 2
блок 3
блок 4
,..
блок 10
При нажатии на кнопку вверху у "блока 4", нужно чтобы он стал на место "блока 3", а "блок 3" спустился на место "блока 4" и теперь "блок 4" получил номер 3 в таблице, а "блок 3" нумеруется как 4 и так до тех пор пока в ходе нажатий на кнопку вверх "блок 4" не станет первым в списке.
Первое, что пришло в голову:
- отправляем данные в массив
- отрисовываем массив, но кнопки элементов вешаем функции вверх/вниз
При нажатии на кнопку срабатывает соответствующая функция, которая принимает на вход порядковый номер элемента в массиве и что с ним делать (двигать вверх или вниз).
Функция проверяет, можно ли совершить действие, после чего выполняет его или нет, и при выполнении пересобирает массив, после чего изменения вновь выносятся на экран.
Можно вместо позиции в массиве ввести какой-нить произвольный ключ.
Скорее всего для этого уже написан плагин, нужно поискать.