Действительно ли возможно получить сериализированный список объектов от УЛ. в jQuery путем вызова сериализировать метода непосредственно вместо того, чтобы использовать обратный вызов? Фрагмент кода:
var sortableLinks = $("#category_links_list_3");
var linkOrderData = $(sortableLinks).sortable('serialize');
category_links_list_3 является идентификатором УЛ.
Структура DOM:
<div class="hidden" id="inline_list_3">
<ul class="category_links_list ui-sortable" id="category_links_list_3">
<li class="link_title ui-state-default" id="category_link_8">Coconut Oil</li>
<li class="link_title ui-state-default" id="category_link_9">Hempseed</li>
</ul>
</div>
Спасибо...
Наконец-то я получил ответ! Перед вызовом метода сериализации для него необходимо сделать UL-сортировку:
var sortableLinks = $("#category_links_list_3");
$(sortableLinks).sortable();
var linkOrderData = $(sortableLinks).sortable('serialize');
На этот раз linkOrderData содержит category_link [] = 8 & category_link [] = 9
Если serialize возвращает пустую строку, убедитесь, что атрибуты id включают подчеркивание. Они должны быть в форме: "set_number". Например, список из трех элементов с атрибутами id foo_1
, foo_5
, foo_2
будет сериализован в foo [] = 1 & foo [] = 5 & foo [] = 2
. Вы можете использовать подчеркивание, знак равенства или дефис для разделения набора и числа. Например, foo = 1
или foo-1
или foo_1
все сериализуются в foo [] = 1
.
Выше один пример. что я его использовал. Вот почему я видел вас двоих.
http://jqueryui.com/demos/sortable/#method-serialize
Возможно, вам поможет.
var formStr = $ ('# container'). Serialize ()
Добавлено: Это будет работать для элементов формы. Вы также можете свернуть свою собственную сериализацию следующим образом:
function serializeList(container)
{
var str = ''
var n = 0
var els = container.find('li')
for (var i = 0; i < els.length; ++i) {
var el = els[i]
var p = el.id.lastIndexOf('_')
if (p != -1) {
if (str != '') str = str + '&'
str = str + el.id.substring(0, p) + '[]=' + (n + 1)
++n
}
}
return str
}
alert(serializeList($('#container')))