获取dragstart位置(让它像点击一样工作)

时间:2014-04-04 18:55:26

标签: javascript jquery click

我想让'dragstart'像点击一样工作。 例如:

// 1. Get the click position
$('#foo').on('click',function(e){ alert(e.pageX+':'+e.pageY);} 

// 2. Get dragstart position, nothing more
$('#foo').on('dragstart',function(e){ alert(e.pageX+':'+e.pageY);}

这就是我想要实现的目标。

但是当然第二个例子不起作用,我不知道如何使它成为可能。简单地说,我需要获得一点点的引导。

我也使用jQuery Mobile,所以也许它有一些我可以使用的方法?我想在没有任何其他库的情况下实现这一点,因此纯jQuery将是最佳解决方案。

为什么呢?问题是,有时用户会快速点击特定元素 - 因此,他们会触发dragstart事件而不是点击。为了解释我的功能,我需要触发事件的位置。

修改

我使用 mousedown 事件而不是dragstart解决了这个问题。 Mousedown正确地给出了点击的坐标,但是知道是否有办法获得dragstart的坐标仍然会很好。

2 个答案:

答案 0 :(得分:1)

$("#foo").draggable({
    create: function (e, ui) {
        $('#foo').on('click', function (event) {
            alert('click: ' + event.pageX + ':' + event.pageY);
        });
        $('#foo').on('dragstart', function (event) {
            alert('dragstart: ' + event.pageX + ':' + event.pageY);
        });
    }
});

答案 1 :(得分:0)

你可以从jQuery.UI调用draggable(),它有一个名为start的属性,你可以绑定一个函数来获取坐标。

示例:

$('#foo').draggable({
    [other options]
    start: function(event) {
               alert(event.clientX+':'+event.clientY);
         }
});

来源:JQuery UI Draggable how to get drag start position