当用户点击一个链接时,我有一个要出现的跳动。
问题是,可以单击和拖动相同的链接来重新排列。在这种情况下,我不需要出现脉搏。只有当它真的在等待去某个地方时,它才需要出现。
使用jQuery,我如何创建一个事件侦听器,如果它是指向链接的单击,而不是单击并拖动,那么它只允许跳动出现?
发布于 2010-11-10 07:39:30
在mousedown时,start设置状态,如果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();
}
});
发布于 2013-02-05 23:46:22
由于某些原因,上面的解决方案对我不起作用。我采用了以下方法:
$('#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');
}
})
您可以将距离限制调整为任何您喜欢的值,甚至可以一直将其设置为零。
发布于 2016-04-08 03:43:21
使用jQuery UI就可以做到这一点!
$( "#draggable" ).draggable({
start: function() {
},
drag: function() {
},
stop: function() {
}
});
https://stackoverflow.com/questions/4127118
复制相似问题