OnDragEnd不要回到起始位置

时间:2014-12-19 21:40:47

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

我正在使用draggable='true'属性在我的网站中创建一个可拖动元素,但我遇到了一个整容问题。

拖动基本上是为了重新排序元素,所以我想把它们拿起来,将它们拖到新的位置,然后简单地将它们释放到新的位置,但是一旦我松开,元素就会向后滑动在搬到新职位之前,它的原始位置。

看到这张图片:

enter image description here

如何防止这种情况发生?我想跳过“回去”部分。

$("div").on('dragend', function(e){

    e.preventDefault();
    e.stopPropagation();
    $("div.slide.placeholder").replaceWith($(this));
    updateSlides();

})

编辑:

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

1 个答案:

答案 0 :(得分: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中测试过。无论如何我不建议你这样做。