JQuery UI 可拖动多个还原选项

JQuery UI Draggable Multiple revert Options

JQuery UI draggable 小部件有一个 revert 选项,用于确定在什么情况下被拖动的元素应恢复到其初始位置。

documentation 指定可以提供字符串 "invalid",在这种情况下,如果拖动的元素未放在 droppable 小部件上,则会恢复到其原始位置。另一种选择是为 revert 提供一个函数,该函数将确定当拖动停止时小部件是否应该恢复。

在我的情况下,我想要这两种行为;我希望小部件在放置在不可放置的元素上时恢复,但我也想进行一些即时自定义验证,验证失败应导致恢复。我怎样才能合并这两个功能?

revert 是一个函数时,传递给它的第一个参数是它被拖放到的 droppablesortable 小部件(如果存在的话),或者 false除此以外。例如:

$(elt).draggable({
    revert: function(dropped) {
        var result = false;
        // dropped can safely be typecast to boolean
        // if you want to call jquery functions on it check for "false" first
        result = customLogic || (dropped && $(dropped).is(".valid-droppable-class") ); 
        return result;
    }
});

使用revert:"invalid"等同于revert: function(dropped) { return dropped; }