@stefan_hansch

Как поменять местами поля с помощью jQuery?

При нажатии на кнопку вверх или вниз блок poll_row должен поменяться местами с предыдущим или последующим и измениться атрибут value скрытого поле на +1 или -1

Есть следующая функция:

assets/javascripts/poll_items.js
$(function(){
  $(document).on('click', '.down_id', function() {
    $(this).siblings('.sequence').val(parseFloat( $(this).siblings('.sequence').val() ) + 1);
    $(this).parent().next().children('.sequence').val( $(this).parent().next().children('.sequence').val() - 1);
    $(this).closest('.poll_row').insertAfter($(this).closest('.poll_row').next());
  });

  $(document).on('click','.up_id', function() {
    $(this).siblings('.sequence').val(parseFloat( $(this).siblings('.sequence').val() ) -1);
      $(this).parent().prev().children('.sequence').val(parseFloat($(this).parent().prev().children('.sequence').val())+ 1);
    $(this).closest('.poll_row').insertBefore($(this).closest('.poll_row').prev());
  });


При нажатии на кнопку значение value меняется. Блоки меняются местами только если нажимаю дважды на кнопку. Не могу понять с чем связано, что при первом клике ничего не происходит


С чем это может быть связано?

polls/edit.html.haml

.................................................
.items-index
    = f.simple_fields_for :poll_items do |poll|
      = render 'poll_item_fields', f: poll
.................................................


polls/oll_item_fields.html.haml

.poll_row
  .poll_item
    = f.input :answer, input_html: { class: 'ctrlenter expanding' }, label: false, placeholder: 'Введите вариант ответа'
    = f.hidden_field :sequence, class: 'sequence'
    = button_tag 'вверх', type: 'button', class: 'up_id', value: 'вверх'
    = button_tag 'вниз', type: 'button', class: 'down_id', value: 'вниз'
    - if @poll.editable?(current_user)
      = link_to_remove_association "удалить", f, { wrapper_class: 'poll_item' }
  • Вопрос задан
  • 502 просмотра
Пригласить эксперта
Ответы на вопрос 2
Ilham
@Ilham
Web разработчик
Можно как то это на демо посмотреть?
Ответ написан
astralo
@astralo
для "спасибо" есть кнопка [Нравится]
Думаю, если вы вместо хамла введете обычный html, то шансы на получение ответа у вас увеличатся.
Не очень корректно использовать хамл джейд и тп. транспилы на ресурсах подобных этому
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы