jquery - 取消 jquery 可拖动对象或重置

标签 jquery jquery-ui

我想加载一个可以拖动到 map /div 上的对象页面,但想要有一个清除/撤消按钮?这可以用 jquery 实现吗?

您可以在上一个问题中看到代码

jQuery UI droppables - changing the image that's dropped

最佳答案

这可以通过简单调用 .animate() 来实现。 (毕竟,这就是 jQueryUI 正在做的所有事情)和一些逻辑来跟踪您正在拖动的元素的原始位置(jQueryUI 已经部分地为您处理)。

  1. 使用 .data() 跟踪可拖动元素的原始位置和 .drop()您的事件droppable对象:

    $("#drop").droppable({
        drop: function(event, ui) {
            if (!ui.draggable.data("originalPosition")) {
                ui.draggable.data("originalPosition",
                    ui.draggable.data("draggable").originalPosition);
            }
        }
    });
    

    基本上,这只是在拖动的元素上设置名为“originalPosition”的数据。这假设您能够继续将元素拖动到有效的放置区域内(因此在您继续拖动后它不会覆盖原始位置)。

  2. 创建一个您调用的函数,将拖动的对象动画返回到其原始位置:

    function revertDraggable($selector) {
        $selector.each(function() {
            var $this = $(this),
                position = $this.data("originalPosition");
    
            if (position) {
                $this.animate({
                    left: position.left,
                    top: position.top
                }, 500, function() {
                    $this.data("originalPosition", null);
                });
            }
        });
    }
    

    根据您的喜好调整动画的速度。

  3. 从事件处理程序调用该函数:

    $("#undo").click(function() {
        revertDraggable($(".drag"));
    });
    

这是一个工作示例:http://jsfiddle.net/v7N6w/

关于jquery - 取消 jquery 可拖动对象或重置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6583153/

相关文章:

javascript - 可折叠力导向图上的 D3.js 标题

javascript - 通过Ajax调整图片大小并上传

jquery - 为什么 valorant 对克隆对象不起作用?

jQuery UI 自动完成选择事件不起作用

jQuery UI 的 addClass 动画不会对子元素进行动画更改

javascript - offsetHeight !== scrollHeight onResize,有时

javascript - 单击时关闭下拉框

带有下拉操作列表的 jQuery UI 对话框按钮

javascript - jQueryUI Autocomplete - 如何将搜索词与关键字列表匹配并显示匹配结果?

javascript - jQuery slider "slide"事件: How do I determine the user's slide direction?