Задать вопрос
@EgorShorin

Как реализовать сортировку блоков с сохранением в input?

Хочу поменять позицию блоков с сохранением позиции в input. Почти получилось, но немного не то.

Скрипт:
$(document).ready(function(){
    $(".up").click(function(){
        var pdiv = $(this).parent('div');
        pdiv.insertBefore(pdiv.prev());
	$(this).parent('div').children('.input0').val($(this).parent().index());
        return false
    });
    $(".down").click(function(){
        var pdiv = $(this).parent('div');
        pdiv.insertAfter(pdiv.next());
	$(this).parent('div').children('.input0').val($(this).parent().index());
        return false
    });
  });

Код
<div>
  <div class="b1">
    Блок 1
    <input class="input0" type="text" value=""></input>
    <a class="up" href="#">Вверх</a> <a class="down" href="#">Вниз</a>
    <div>111</div>
  </div>
  <div class="b1">
    Блок 2
    <input class="input0" type="text" value=""></input>
    <a class="up" href="#">Вверх</a> <a class="down" href="#">Вниз</a>
    <div>222</div>
  </div>
  <div class="b1">
    Блок 3
    <input class="input0" type="text" value=""></input>
    <a class="up" href="#">Вверх</a> <a class="down" href="#">Вниз</a>
    <div>333</div>
  </div>
  <div class="b1">
    Блок 4
    <input class="input0" type="text" value=""></input>
    <a class="up" href="#">Вверх</a> <a class="down" href="#">Вниз</a>
    <div>444</div>
  </div>
  <div class="b1">
    Блок 5
    <input class="input0" type="text" value=""></input>
    <a class="up" href="#">Вверх</a> <a class="down" href="#">Вниз</a>
    <div>555</div>
  </div>
</div>


В целом работает, но сейчас фиксируется позиция блока позиция которого изменена. Я полагаю, что нужно изменять не input0 активного блока, а фиксировать позицию всех блоков в соотвествующие input. Решение на поверхности, но сообразить не могу.
  • Вопрос задан
  • 110 просмотров
Подписаться 1 Средний 1 комментарий
Решения вопроса 1
SilenceOfWinter
@SilenceOfWinter
та еще зажигалка...
$(".up").click(function(){
  var current = $(this).parents('.b1');
  current.prev().before(current);
});
$(".down").click(function(){
  var current = $(this).parents('.b1');
  current.next().after(current);
});

либо использовать replacewith()
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы