我需要确定是否只是单击或拖动了可移动的 div。我知道这个问题有多种解决方案,但由于整个项目的性质和我正在使用的脚本,我无法应用其他方式,因为它们会干扰一些 jQuery 方法。
这是我的代码:
$('.textFieldOuter').mousedown(function(e) {
var oldMousePos = [e.pageX,e.pageY];
fieldMouseDown(oldMousePos,$(this));
});
function fieldMouseDown(oldMousePos,field) {
field.bind("mouseup",function(e) {
var newMousePos = [e.pageX,e.pageY];
console.log("oldMousePos: " + oldMousePos);
console.log("newMousePos: " + newMousePos);
if(oldMousePos == newMousePos) { console.log("Mouse did NOT move!") }
else if(oldMousePos != newMousePos) { console.log("Mouse MOVED!") }
$(this).unbind("mouseup");
});
}
为什么此代码总是记录“鼠标移动!” 事实上,在“mouseup”事件之前,鼠标只是被点击而不是移动?在控制台中甚至可以看到,变量“oldMousePos”和“newMousePos”存储完全相同的坐标,如果鼠标没有被拖动,但“鼠标已移动!” 已记录。为什么是这样?