Я работаю со списком, элементы которого можно выбирать (используя флажки) и сортировать (используя jquery «сортируемый»).
Список выглядит следующим образом:
<ul id="dragdrop">
<li id="1290"><input type="checkbox" id="290" checked class="slideToggle" /><img ... /></li>
<li id="1291"><input type="checkbox" id="291" checked class="slideToggle" /><img ... /></li>
</ul>
... и JavaScript выглядит так:
$(".slideToggle").click(function () {
var slideId = $(this).attr("id");
var checked = $(this).attr("checked");
if (slideId) {
$.post("ToggleInclusion", { "slideId": slideId, "isChecked": checked },
function () {
var newId = checked ? "1" : "0" + slideId;
$(this).parent().attr("id", newId);
});
}
});
$("#dragdrop").sortable({
update: function() {
var order = $(this).sortable("toArray").toString();
$.post("UpdateOrder", { "order": order }, function () { });
}
});
Поэтому, когда пользователь снимает флажок дляскажем, второй элемент (id = 291), его элемент списка изменяется на
<li id="0291" ... ></li>
Проблема, с которой я сталкиваюсь, заключается в том, что это изменение не фиксируется сортируемым списком.Когда второй элемент не отмечен и затем перетаскивается на позицию перед первым элементом, строка заказа, отправляемая на сервер, называется «1291,1290», тогда как она должна быть «0291,1290».
Я пробовал звонить $("#dragdrop").sortable("refresh")
и друзьям как в конце обратного вызова, так и непосредственно перед сортируемым сообщением об обновлении, но без кубиков.
Есть идеи?