为啥我的 Jquery 可拖动对象放置在三个可拖放对象之一上时会跳转?

Posted

技术标签:

【中文标题】为啥我的 Jquery 可拖动对象放置在三个可拖放对象之一上时会跳转?【英文标题】:Why does my Jquery draggable jump when placed on one of three droppables?为什么我的 Jquery 可拖动对象放置在三个可拖放对象之一上时会跳转? 【发布时间】:2014-01-21 16:52:41 【问题描述】:

我有三个可调整大小的可放置区域和一个可拖动区域,一旦拖动到可放置区域上,它就会变得可调整大小。但是可拖动并没有停留在我放下它的地方。它附加到正确的 droppable 中,但会在位置上跳跃,有时会超出屏幕边缘。

$('.draggable').draggable();

$(".droppable").droppable(

            drop: function (e, ui) 
                if ($(ui.draggable)[0].id != "") 
                    x = ui.helper.clone();
                ui.helper.remove();
                x.draggable(
                    helper: 'original',
                    tolerance: 'fit'
                );
                x.resizable(
                    aspectRatio:true,
                    minHeight: 50,
                    minWidth: 50
                );
               var id = "#" + $(this).attr("id");
               x.appendTo(id);
            

            
        );

$(".droppable").resizable();

jsFiddle 在这里:http://jsfiddle.net/gTwLe/3/

【问题讨论】:

【参考方案1】:

因为您正在克隆它,然后破坏原始文件。所以克隆后需要设置被克隆物体的坐标(x)与原来的匹配。

$('.draggable').draggable();


$(".droppable").droppable(

                drop: function (e, ui) 
                    if ($(ui.draggable)[0].id != "") 
                        x = ui.helper.clone();

                    x.draggable(
                        helper: 'original',
                        tolerance: 'fit'
                    );
                    x.resizable(
                        aspectRatio:true,
                        minHeight: 50,
                        minWidth: 50
                    );
                   var id = "#" + $(this).attr("id");
                   x.appendTo(id);
                    x.offset(ui.helper.offset());
                    ui.helper.remove();
                

                
            );

$(".droppable").resizable();

jsFiddle 在这里:http://jsfiddle.net/X4MmR/

【讨论】:

看起来不错(这个问题的正确答案)。当我添加它时,似乎并没有解决我实际应用程序中的问题。不知道你想不想看看。如果您转到字符选项卡并尝试将一个带到面板中,同样的事情仍在发生:thelionscall.com/wp-content/comic-creator/index-testb.html 您在第 123 行留下了 ui.helper.remove() 并在第 137 行添加了它。我认为如果您消除第 123 行的第一个删除,它将对您有用。

以上是关于为啥我的 Jquery 可拖动对象放置在三个可拖放对象之一上时会跳转?的主要内容,如果未能解决你的问题,请参考以下文章

jQuery拖放 - 检查droppable之外的拖放

jQuery 可拖放和可滚动的 div

jQuery-ui 可拖动滚动仅垂直

可排序、可拖放和可拖动的容器

可拖放元素内的可拖放元素

可拖放 可拖动 附加到位置