9

我正在使用 JQuery UI 使元素可拖动,并且在代码中,可以指定在开始、拖动和结束时要做什么。

但是我怎样才能在向左拖动时运行一个函数而在向右拖动时运行另一个函数呢?

我已经将可拖动轴限制为仅 x 轴。所以元素只能向左或向右移动。

4

3 回答 3

14

检查这个演示: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;
    }
});
于 2013-04-30T06:25:29.327 回答
9

Here's an easier way to do it:

$( "#draggable" ).draggable({
    drag: function( event, ui ) {
        $(this).text(ui.originalPosition.left > ui.position.left ?  'left' : 'right');
    }
});

Demo: http://jsfiddle.net/GNHTW/

于 2013-04-30T06:33:17.140 回答
0

我建议您处理startandstop事件并确定停止事件中的位置增量以获取它是向左还是向右移动:

http://jqueryui.com/draggable/#events

于 2013-04-30T06:26:25.377 回答