【发布时间】:2011-05-06 03:10:41
【问题描述】:
我正在处理一个列表,其项目既可以选择(使用复选框)又可以排序(使用 jquery 'sortable')。
列表如下所示:
<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") 和朋友,但没有骰子。
有什么想法吗?
【问题讨论】:
标签: jquery ajax jquery-ui-sortable