Javascript,存储和检索dragstart事件中元素的第一个坐标

时间:2016-12-12 19:57:16

标签: javascript jquery drag-and-drop closures

我想知道如何在dragstart事件中首先存储和检索元素的坐标(offest)。

我使用interact.js,但这是一个普遍的问题......

到目前为止,我编写了这个函数,因为我想我必须使用一个闭包并将坐标存储在一个Javascript对象中:

 function checkStartPos(event) {
      var target = event.target,
      targetOffset = $(target).offset(),
      x = targetOffset.left,
      y =  targetOffset.top
        console.log('drag started!');

         return function() {

            return {
            x : x,
            y : y

      }

  }

On" dragend"事件我会记得改变元素样式的原始值,以便我的元素回到原始位置......

1 个答案:

答案 0 :(得分:1)

为什么不将xy变为全局变量?请注意,您还可以使用event.clientXclientY属性,而不是jQuery offset()



var x, y

$('#example').on('dragstart', function checkStartPos(event) {
    var target = event.target
    x = event.clientX
    y = event.clientY
    console.log('drag started at (' + x + ',' + y + ')')
}).on('dragend', function() {
    console.log('recall: (' + x + ',' + y + ')')
})

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="example" style="width:100px;height:100px" draggable>stuff</div>
&#13;
&#13;
&#13;

(之前我没有使用draggable,而且此刻的演示版本不允许您拖动。但是,拖拽东西似乎不是你的问题,并且示例JS应该根据您之前的工作设置执行您想要的操作。)