我找到了一些代码,并用它制作了jsfillde。我需要知道如何在下面的函数中触发mouseup,当您离开文档正文时(在小提琴示例中,例如将对象拖动到HTML部分,然后单击鼠标左键)。
function handleMouseMove(e) {
if (canMove) {
var left = getMousePosX(e);
var top = getMousePosY(e);
var newLeft = ($(elemToMove).css('left').toDecNum() + (left - lastPosX));
var newTop = ($(elemToMove).css('top').toDecNum() + (top - lastPosY));
$(elemToMove).css('left', newLeft);
$(elemToMove).css('top', newTop);
lastPosX = left;
lastPosY = top;
}
return false;
}
感谢您的任何建议。
答案 0 :(得分:1)
您可以使用
document.onmouseout = handleMouseUp;
这表示当鼠标离开文档对象时,应该调用handleMouseUp
处理程序。
更新小提琴: http://jsfiddle.net/vp14utt1/1/
-
P.S。对于简单地将事件作为参数的事件处理程序,您只需使用函数名称而不包装它。
document.onmousedown = function (e) { handleMouseDown(e); };
document.onmousedown = handleMouseDown;
答案 1 :(得分:0)
$(elemToMove).trigger('mouseup');
应该这样做。
答案 2 :(得分:0)
添加此行(new Fiddle):
document.onmouseleave = function (e) { handleMouseUp(e); };
当鼠标从浏览器窗口拖出时,会触发“鼠标按下”逻辑。
引用The difference between mouseout() and mouseleave():
当鼠标指针离开任何子元素以及所选元素时,mouseout事件会触发。
只有当鼠标指针离开所选元素时才会触发mouseleave事件。
我想你想要后者。