使用jQuery UI可拖动来检测何时向左或向右拖动项目?

时间:2013-04-30 06:19:48

标签: javascript jquery jquery-ui

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

但是如何在向左拖动时运行一个函数而在向右拖动时运行另一个函数?

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

3 个答案:

答案 0 :(得分:13)

检查此演示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;
    }
});

答案 1 :(得分:8)

这是一种更简单的方法:

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

演示:http://jsfiddle.net/GNHTW/

答案 2 :(得分:0)

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

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