您能检测到jQuery中的“拖放”吗?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (43)

我有一个Throbber,当用户点击一个链接时出现。

问题是,可以点击并拖动相同的链接进行重新排列。在这种情况下,我不需要Throbber出现。

我怎样才能用jQuery创建一个事件监听器,如果点击链接,只允许一个Throbber出现,如果拖放链接就不出现?

提问于
用户回答回答于

在鼠标向下,开始设置状态,如果Mousemove事件被触发,记录它,最后在mouseup上,检查鼠标是否移动。如果它动了我们一直在拖。如果我们没有移动,那就是点击。

var isDragging = false;
$("a")
.mousedown(function() {
    isDragging = false;
})
.mousemove(function() {
    isDragging = true;
 })
.mouseup(function() {
    var wasDragging = isDragging;
    isDragging = false;
    if (!wasDragging) {
        $("#throbble").toggle();
    }
});
用户回答回答于

我的看法如下:

$('#container').on('mousedown', function(e) {
    $(this).data('p0', { x: e.pageX, y: e.pageY });
}).on('mouseup', function(e) {
    var p0 = $(this).data('p0'),
        p1 = { x: e.pageX, y: e.pageY },
        d = Math.sqrt(Math.pow(p1.x - p0.x, 2) + Math.pow(p1.y - p0.y, 2));

    if (d < 4) {
        alert('clicked');
    }
})

你可以把距离限制调整到你喜欢的任何地方,甚至可以把距离调整到零。

扫码关注云+社区

领取腾讯云代金券