在包含其他函数的函数上返回false

时间:2013-09-09 09:26:31

标签: javascript jquery-ui jquery

我正在使用jquery ui和sortable,我希望将它与对变更事件的Ajax调用结合起来:

$("#events").sortable({
    change: function (event, ui) {
        $.ajax({
            type: "POST",
            url: "/tasks/updateTaskUserPosition",
            dataType: "json",
            data: {
                taskId: ui.item.data("task-id")
            },
            success: function (result) {
                if (result == "error") {
                    alert("Not possible!");
                    return false;
                }
            }
        });
    }
});

如果Ajax成功满足条件,我希望change事件返回false(IE,重置位置更改),基本上我需要“抓取”一个函数。我应该怎么做呢?

1 个答案:

答案 0 :(得分:2)

  

我该怎么做呢?

你不能(嗯,不合理)。 Ajax调用是异步的。当ajax调用完成时,对change进行的可排序调用已经很久了。

虽然你可以(现在)使ajax调用同步,但这通常不是一个好主意,因为它在调用期间锁定了浏览器的UI。 jQuery将在以后的版本中删除async标志。

所以正确的做法是不依赖于change中ajax调用的结果;以不同的方式解决问题(如果需要,可能会保存一些状态并恢复该状态)。