【发布时间】:2010-10-05 05:32:01
【问题描述】:
我有对象(div-box),它是可拖动的(我正在使用 jQuery)。我如何获得访问者移动它的方向的信息?示例:用户将它拖到左下,我想知道它,如何?
【问题讨论】:
标签: jquery jquery-ui-draggable
我有对象(div-box),它是可拖动的(我正在使用 jQuery)。我如何获得访问者移动它的方向的信息?示例:用户将它拖到左下,我想知道它,如何?
【问题讨论】:
标签: jquery jquery-ui-draggable
这个怎么样?
var start,stop;
$("#draggable2").draggable({
axis: "x",
start: function(event, ui) {
start = ui.position.left;
},
stop: function(event, ui) {
stop = ui.position.left;
alert('has moved ' + ((start < stop) ? 'right':'left'))
}
});
【讨论】:
ui.position.top 也可用。 OP 可以轻松应对。
原始位置内置在 ui.helper 对象中。你可以这样做:
$('#foo').draggable({
stop: function(event, ui) {
var dragged = ui.helper;
var dragged_data = dragged.data('draggable');
var direction = (dragged_data.originalPosition.left > dragged.position().left) ? 'left' : 'right';
console.log(direction);
}
});
您可以在开始、拖动或停止事件回调中执行此操作...
【讨论】:
这个问题有两个答案:
实时获取方向,即无论起始位置。为此,您需要设置和使用previousPosition,如下所示:
$("#draggable").draggable({
axis: "x",
start: function(event, ui) {
this.previousPosition = ui.position;
},
drag: function(event, ui) {
var direction = (this.previousPosition.left > ui.position.left) ? 'left' : 'right';
alert('moving ' + direction)
}
});
在下降后获取方向,因此使用起始位置。为此,您需要使用提供的originalPosition,如下所示:
$("#draggable").draggable({
axis: "x",
stop: function(event, ui) {
var direction = (ui.originalPosition.left > ui.position.left) ? 'left' : 'right';
alert('has moved ' + direction)
}
});
注意:此代码是为 jQuery 1.11.1 编写和测试的
【讨论】:
看看这个页面,这个网站上有源代码和演示:
【讨论】: