Сортируемый список для обновления скрытого ввода

#javascript #jquery #jquery-ui-sortable #hidden-field

#javascript #jquery #jquery-ui-сортируемый #скрытое поле

Вопрос:

У меня есть неупорядоченный список, который можно сортировать с помощью jQuery. Функции сортировки работают нормально и приведены ниже. Каждый элемент списка имеет идентификатор в этом формате — id =»post_#», где # — это уникальный номер. Мне нужно обновить скрытое входное значение с порядком элементов списка после их сортировки, но только #. Так что, если порядок элементов был> post_3, post_2, post_4, post_1 < тогда входное значение будет — value =»3,2,4,1″

Вот jQuery, который у меня есть до сих пор-

 <script type="text/javascript">
    jQuery(document).ready(function(){ 
        jQuery(function() {
            jQuery("#wpbody-content #post_sortable_list").sortable({ opacity: 0.6, cursor: 'move', update: function() {
                var order = $(this).sortable;

            }
            });
        });
    });
    </script> 
 

И HTML-

 <div id="wpbody-content">
<ul id="post_sortable_list">
<li id="post_1">foo</li>
<li id="post_2">bar</li>
<li id="post_3">hello</li>
<li id="post_4">world</li>
</ul></div>

<input type="hidden" name="posts_order" value="" />
 

Комментарии:

1. Just do var order = $(this).sortable("serialize"); вернет массив с идентификатором post и результатом 3,2,4,1 🙂

Ответ №1:

можете ли вы сделать что-то вроде

 var order = '';
 $('#post_sortable_list').find('li').each( function () {
  order = order   $(this).text().substring(5);
});
$('posts_order').val(order);
 

возможно, я далеко от базы

Ответ №2:

 <script type="text/javascript">
    jQuery(document).ready(function(){ 
        jQuery(function() {
            jQuery("#wpbody-content #post_sortable_list").sortable({ opacity: 0.6, cursor: 'move', update: function() {
                var order = $(this).map(function(i, e){
                    return $(e).attr("id").substring(5);
                }.join(", ");

            }
            });
        });
    });
    </script> 
 

Попробуйте использовать map, чтобы получить все идентификаторы, а затем объединить их в строку.