#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, чтобы получить все идентификаторы, а затем объединить их в строку.