我想知道如何在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"事件我会记得改变元素样式的原始值,以便我的元素回到原始位置......
答案 0 :(得分:1)
为什么不将x
和y
变为全局变量?请注意,您还可以使用event.clientX
和clientY
属性,而不是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;
(之前我没有使用draggable
,而且此刻的演示版本不允许您拖动。但是,拖拽东西似乎不是你的问题,并且示例JS应该根据您之前的工作设置执行您想要的操作。)