Javascript 拦截并替换掉在可排序表上的项目

Javascript 拦截并替换掉在可排序表上的项目,javascript,jquery,jquery-ui,jquery-ui-sortable,jquery-ui-draggable,Javascript,Jquery,Jquery Ui,Jquery Ui Sortable,Jquery Ui Draggable,我有一个jQueryUI可排序列表,它与一个可拖动列表相连接。您可以将项目从可拖动列表中拖出,然后将其放到可排序列表中。这很有效 但是,我想截取这个删除并完全改变——实际上是替换——实际插入到可排序列表中的列表项。查看jQuery UI sortable的“update”事件,我看到了检查正在删除的项的各种方法,但我不知道如何说“不要插入刚刚删除的项--而是插入此项” 有办法吗?如果不是,处理这个用例的“最佳实践”是什么?我肯定我不是第一个想做这种事情的人。可能有更好的解决方案,但这可能适合您的

我有一个jQueryUI可排序列表,它与一个可拖动列表相连接。您可以将项目从可拖动列表中拖出,然后将其放到可排序列表中。这很有效

但是,我想截取这个删除并完全改变——实际上是替换——实际插入到可排序列表中的列表项。查看jQuery UI sortable的“update”事件,我看到了检查正在删除的项的各种方法,但我不知道如何说“不要插入刚刚删除的项--而是插入此项”


有办法吗?如果不是,处理这个用例的“最佳实践”是什么?我肯定我不是第一个想做这种事情的人。

可能有更好的解决方案,但这可能适合您的情况:

$("#sortable").sortable({
    update: function (e, ui) {
        var myElement = $("<li style='background-color: red'>" + $(ui.item).text() + "</li>");

        $(ui.item).replaceWith(myElement);
    }
});

但是,在这种情况下,原始元素只是恢复,您必须将其删除并手动确定它将插入的位置。

我也在做同样的事情,我找到的最佳解决方案是使用停止事件。 我之前尝试过接收和更新事件,但结果并不理想


stop事件唯一的缺点是,即使项目之间进行了排序,它也会被触发。

我实际上实现了一个不同的解决方案——我在拖动之前修改了origin元素——但这似乎是我所问问题的最佳答案,所以我接受它。谢谢
$("#sortable").sortable({
    beforeStop: function () {
        $(this).sortable('cancel');
    }
});