【发布时间】:2011-09-24 20:21:59
【问题描述】:
我有一个可拖动元素$myElement 和revert: true。现在指定revertDuration 将确定还原动画完成所需的时间。
我的问题是,动画的速度会根据$myElement 从原始位置下降的距离而有很大差异。
有没有办法指定动画的速度(相对于总时间)?
【问题讨论】:
标签: jquery
我有一个可拖动元素$myElement 和revert: true。现在指定revertDuration 将确定还原动画完成所需的时间。
我的问题是,动画的速度会根据$myElement 从原始位置下降的距离而有很大差异。
有没有办法指定动画的速度(相对于总时间)?
【问题讨论】:
标签: jquery
您需要的是position jQuery UI 插件,可在此处找到:http://jqueryui.com/demos/position/
您可以获得可拖动元素的偏移量。或者干脆使用:
var x = $myElement.offset().left
var y = $myElement.offset().top
我想到的解决方案:
触发可拖动对象的start 事件时保存元素的位置。然后在 'stop' 事件发生并且animate 元素回到起始偏移量时执行相同的操作。偏移量的差异是一条线,其长度与返回所需的时间成正比。
var x,y;
$myElement.draggable({
start: function(event, ui) {
x = $myElement.offset().left;
y = $myElement.offset().top;
},
stop: function(event, ui) {
// count the length of the line from starting point
// and trigger back animation
}
});
您可以尝试在调用stop 事件时设置恢复持续时间以避免animate,但我不知道它是否在恢复动画之前完成。
$( ".selector" ).draggable( "option", "revertDuration", 1000 );
【讨论】: