Как создать смену номера блока?
Есть страница, на которой строки меняются местами с соседними строками при нажатии на кнопку вверх/вниз
https://habrastorage.org/webt/5d/21/...f986482979.png В каждой из этих строк имеется порядковый номер строки. Скрипт на jQuery написал, чтобы строки менялись местами, написал, чтобы строка 1 принимала значение строки 2 (порядковый номер) при перемещении, но не получается при этом, чтобы строка 2 принимала номер 1, т.к. выполнение последовательное происходит и вторая строка вообще стирает значение номера. В итоге получается, что строка 2 имеет порядковый номер 2 и данные блока 1, а строка 1 вообще без номера становится. Помогите, пожалуйста. Весь день сижу с этой проблемой. p.s. скрипт нужен не для константных вручную прописанных id=1, id=2, а чтобы автоматически определись id перемещаемых блоков и менялись в них порядковые номера, т.к. строк может быть 2, а может быть и 50 и id каждого прописывать вручную в код - не комильфо. Логику понимаю как должно работать, а как написать это не получается никак Код:
<div id="order-1" class="order__wrap dflex"> Код:
$(function() { |
|
смена соседних блоков
Aruta,
<!DOCTYPE html> <html> <head> <title>Untitled</title> <meta charset="utf-8"> <style type="text/css"> body { counter-reset: myCounter 0; } .order_position span:after { counter-increment: myCounter 1; content: counter(myCounter)')'; text-align: center; margin: 5px 10px; } .order__wrap:first-of-type .nav__triangle-up, .order__wrap:last-of-type .nav__triangle-down { display: none; } .order__wrap { border: 2px solid #8b4513; margin: 4px; } .nav__triangle-up:before { content: '▲'; } .nav__triangle-down:before { content: '▼'; } </style> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> <script> $(function() { $(".order__wrap").on("click", ".nav__triangle-up, .nav__triangle-down", function(event) { var parent = $(event.delegateTarget), down = this.classList.contains("nav__triangle-down"); down ? parent.next().insertBefore(parent) : parent.insertBefore(parent.prev()) }) }); </script> </head> <body> <div class="order__wrap dflex"> <div class="order__half dflex"> <div class="order__nav dflex"> <div class="nav__triangle-up dflex"> //кнопка перемещения заказа вверх на 1 строку .... </div> <div class="nav__triangle-down dflex"> //кнопка перемещения заказа вниз на 1 строку .... </div> </div> <div class="order_position"> <span></span> //вот это число надо менять на +1 или -1 при переходе строки вверх/вниз </div> <div class="order__data"> ... box </div> </div> </div> <div class="order__wrap dflex"> <div class="order__half dflex"> <div class="order__nav dflex"> <div class="nav__triangle-up dflex"> //кнопка перемещения заказа вверх на 1 строку .... </div> <div class="nav__triangle-down dflex"> //кнопка перемещения заказа вниз на 1 строку .... </div> </div> <div class="order_position"> <span></span> //вот это число надо менять на +1 или -1 при переходе строки вверх/вниз </div> <div class="order__data"> ... room </div> </div> </div> <div class="order__wrap dflex"> <div class="order__half dflex"> <div class="order__nav dflex"> <div class="nav__triangle-up dflex"> //кнопка перемещения заказа вверх на 1 строку .... </div> <div class="nav__triangle-down dflex"> //кнопка перемещения заказа вниз на 1 строку .... </div> </div> <div class="order_position"> <span></span> //вот это число надо менять на +1 или -1 при переходе строки вверх/вниз </div> <div class="order__data"> ... cat </div> </div> </div> <div class="order__wrap dflex"> <div class="order__half dflex"> <div class="order__nav dflex"> <div class="nav__triangle-up dflex"> //кнопка перемещения заказа вверх на 1 строку .... </div> <div class="nav__triangle-down dflex"> //кнопка перемещения заказа вниз на 1 строку .... </div> </div> <div class="order_position"> <span></span> //вот это число надо менять на +1 или -1 при переходе строки вверх/вниз </div> <div class="order__data"> ... data </div> </div> </div> </body> </html> |
Спасибо за подсказку! Но при переносе на сайт почему-то срабатывала смена через 1 номер.
1 с 3, вместо 1 со 2 2 с 4, вместо 2 с 3, 5 с 7, вместо 5 с 6 и т.д. Но спасибо за помощь всё равно:) |
Работает:)
Спасибо огромное:) |
Цитата:
|
Цитата:
Понимаю, что наглею уже, но как сделать еще и добавление в "id=position" значений? Т.к. из него потом мне нужно еще эти цифры вытягивать, чтобы при смене позиции блока он оставался там даже после перезапуска браузера. Если через :after добавлять их, то потом разве можно в LocalStorage записать? |
Цитата:
|
Часовой пояс GMT +3, время: 13:34. |