【发布时间】:2013-04-30 06:19:47
【问题描述】:
我正在使用 JQuery UI 使元素可拖动,并且在代码中,可以指定在开始、拖动和结束时要做什么。
但是我怎样才能在向左拖动时运行一个函数而在向右拖动时运行另一个函数呢?
我已经将可拖动轴限制为仅 x 轴。所以元素只能左右移动。
【问题讨论】:
标签: javascript jquery jquery-ui
我正在使用 JQuery UI 使元素可拖动,并且在代码中,可以指定在开始、拖动和结束时要做什么。
但是我怎样才能在向左拖动时运行一个函数而在向右拖动时运行另一个函数呢?
我已经将可拖动轴限制为仅 x 轴。所以元素只能左右移动。
【问题讨论】:
标签: javascript jquery jquery-ui
查看此演示:http://jsfiddle.net/3NtS9/
您可以通过检查每个原子拖动操作上的前一个事件坐标来做到这一点。
var prevX = -1;
$('div').draggable({
drag: function(e) {
//console.log(e.pageX);
if(prevX == -1) {
prevX = e.pageX;
return false;
}
// dragged left
if(prevX > e.pageX) {
console.log('dragged left');
}
else if(prevX < e.pageX) { // dragged right
console.log('dragged right');
}
prevX = e.pageX;
}
});
【讨论】:
这里有一个更简单的方法:
$( "#draggable" ).draggable({
drag: function( event, ui ) {
$(this).text(ui.originalPosition.left > ui.position.left ? 'left' : 'right');
}
});
【讨论】:
我建议您处理 start 和 stop 事件并确定停止事件中的位置增量以获取它是向左还是向右移动:
【讨论】: