使用jQuery连接,可排序列表,如何在此处阻止3个ajax调用...?

时间:2011-01-25 21:56:53

标签: javascript jquery ajax jquery-ui jquery-ui-sortable

使用jQuery 1.4和jQueryUI 1.8

我有一个包含3列的表结构,每列都是一个“链接”可排序列表。

我想向我的服务器发送一个AJAX更新,它只包含给定列的信息(如果有任何项目被移动),并且只有两个给定列的项目被移动列之间。

要说明:如果列表A,第1项仅移动到列表A 中的新位置,我没有理由发送更新任何列表订单的请求但是列出A ,可以通过update上的回调来完成。容易。

但是,如果我将列表A,第1项移动到列表B ,我想尽可能少地发送请求(1,可能是2)来更新订购给定的清单。但是,在使用回调receiveremove时,update始终被调用。

我的第一个想法是使用update和/或remove,找到原始列表,然后更新两者。但是首先调用update,这将导致至少一个额外的ajax请求到服务器。

如果我只使用 update而只是在回调中查看ui.sender,我仍然会发送2个请求,因为第一个更新会触发现在的列表缺少一个项目(我必须假设它只是没有使用ui.sender),然后第二次更新用ui.sender触发,我将更新旧列表和新列表。

我不能使用update,否则我会错过在自己的列表中移动的项目。

我该如何处理?我忽略了什么?

1 个答案:

答案 0 :(得分:0)

我花了一些时间在这上面并且失望了,这里没有答案!!

但我最终想通了。

它通过检查父UL来查看该项是否实际存在于其更新的列表中。

var sortorder = ui.item.index();

if(this.children[sortorder] != null 
&& this.children[sortorder].innerHTML == ui.item.context.innerHTML) //you could use an id here.
{
  // do stuff like update the sort order of the record in the database via ajax.
}

什么是堆栈溢出和只有一行的代码框? 有没有人有这个问题? 我正在使用IE 6

干杯, 佰。