首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >你能在jQuery中检测到“拖拽”吗?

你能在jQuery中检测到“拖拽”吗?
EN

Stack Overflow用户
提问于 2010-11-09 03:11:47
回答 14查看 190.7K关注 0票数 117

当用户点击一个链接时,我有一个要出现的跳动。

问题是,可以单击和拖动相同的链接来重新排列。在这种情况下,我不需要出现脉搏。只有当它真的在等待去某个地方时,它才需要出现。

使用jQuery,我如何创建一个事件侦听器,如果它是指向链接的单击,而不是单击并拖动,那么它只允许跳动出现?

EN

回答 14

Stack Overflow用户

回答已采纳

发布于 2010-11-10 07:39:30

在mousedown时,start设置状态,如果mousemove事件被激发,则记录它,最后在mouseup时,检查鼠标是否移动。如果它动了,我们就一直在拖拽。如果我们还没有移动,那就是点击。

代码语言:javascript
复制
var isDragging = false;
$("a")
.mousedown(function() {
    isDragging = false;
})
.mousemove(function() {
    isDragging = true;
 })
.mouseup(function() {
    var wasDragging = isDragging;
    isDragging = false;
    if (!wasDragging) {
        $("#throbble").toggle();
    }
});

这是一个演示:http://jsfiddle.net/W7tvD/1399/

票数 237
EN

Stack Overflow用户

发布于 2013-02-05 23:46:22

由于某些原因,上面的解决方案对我不起作用。我采用了以下方法:

代码语言:javascript
复制
$('#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');
    }
})

您可以将距离限制调整为任何您喜欢的值,甚至可以一直将其设置为零。

票数 27
EN

Stack Overflow用户

发布于 2016-04-08 03:43:21

使用jQuery UI就可以做到这一点!

代码语言:javascript
复制
$( "#draggable" ).draggable({
  start: function() {

  },
  drag: function() {

  },
  stop: function() {

  }
});
票数 22
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4127118

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档