【问题标题】:OnDragEnd don't go back to starting positionOnDragEnd 不回到起始位置
【发布时间】:2014-12-19 21:40:47
【问题描述】:

我正在使用draggable='true' 属性在我的网站中制作可拖动元素,但我遇到了外观问题。

拖动基本上是为了重新排序元素,所以我想把它们捡起来,拖到新的位置,然后简单地松开它们到新的位置,但是一松手,元素就会滑回来在移动到新位置之前回到原来的位置。

看这张图片:

我怎样才能避免这种情况发生?我想跳过“返回”部分。

$("div").on('dragend', function(e){
    
    e.preventDefault();
    e.stopPropagation();
    $("div.slide.placeholder").replaceWith($(this));
    updateSlides();
    
})

编辑:

已确认此问题已本地化到 Mac。它与整个窗口反弹效果非常相似。

【问题讨论】:

    标签: javascript jquery html drag-and-drop draggable


    【解决方案1】:

    我尝试使用 jquery 编写您想要的代码。

    -->http://jsfiddle.net/oLc2f3kp

    可以拖动具有类.drag_item 的元素。如果您将其释放到不在具有类.release_area 的元素区域的任何位置,它将回到之前的位置。

    我希望这是你想要的。如果您对此代码有任何疑问,请问我:D


    已更新我尝试了很多次,现在我有了解决方案

        $('div[class=dragable]').on('dragend',function(e){
            $(this).css('top',e.originalEvent.pageY-($(this).height()/2));
            $(this).css('left',e.originalEvent.pageX-($(this).width()/2));
        });
    

    我在拖动时无法获得位置(我得到的位置是开始拖动之前元素的原始位置”)
    所以唯一的方法(到目前为止我已经测试过)是获取鼠标放下时的位置,
    设置lefttop 与鼠标的位置相同。

    我只在 Chrome 中测试过。反正我不建议你这样做。

    【讨论】:

    • ondragstartondragendondragenterondragleave等都是on W3Schools列出的Drag events下的Javascript事件
    • @David 哦,我从未见过。谢谢你的信息:)
    猜你喜欢
    • 1970-01-01
    • 2018-11-15
    • 1970-01-01
    • 1970-01-01
    • 2015-01-11
    • 2021-06-27
    • 1970-01-01
    • 1970-01-01
    • 2012-06-15
    相关资源
    最近更新 更多