我正在开发一个使用 jquery-ui sortable 小部件的项目。
在某些情况下,我需要问用户一个与排序相关的问题,然后
update
回调将根据他们的答案表现不同。
我使用内置的
confirm
功能来完成此工作,但是我需要能够自定义按钮,这是不可能的。 Jsfiddle 链接如下。
如果我切换到自定义提示,那么我认为我无法使其阻塞,这意味着排序在用户回答问题之前完成。
有没有一种方法可以“暂停”排序,直到用户回答了问题,这样我就可以得到与以下示例相同的功能,但带有自定义的确认对话框?
出于此问题的目的,我们可以假设可以按如下方式调用自定义确认对话框(基于 jsfiddle 中的代码):
beforeStop:function(e,u) {
// Pause the sort
customConfirmDialog("Do you want to do something special?", function(result) {
if (result) {
// They said yes
u.item.addClass("special");
}
// Allow the sort to continue here
});
}
如果您阅读了 cancel 方法的文档,它会说:
取消当前可排序的更改并将其恢复到当前排序开始之前的状态。在停止和接收回调函数中很有用。
我认为您始终可以取消该活动,然后在他们确认后自行移动该物品。您可以记录占位符的前一个同级,以便知道将其放置在哪里(如果移动到列表顶部,则为空)。
您可能还需要使用 refresh 和/或 refreshPositions 才能使一切正常工作(我猜是
refreshPositions
)。