似乎mouseup事件只有在不与mousemove一起使用时才会被触发。换句话说,按下鼠标左键并松开,鼠标向上移动就会被触发。但是,如果您在图像上拖动鼠标,然后松开鼠标,则不会触发鼠标向上移动。下面是一个显示此行为的示例:
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<div id="Out">
<img id="Img" src="http://sstatic.net/so/img/logo.png" width=500>
</div>
<script language=JavaScript>
$(function() {
$(document).bind("mouseup",function() {alert("UP");});
//$("#Out").bind("mouseup",function() {alert("UP");});
//$("#Img").bind("mouseup",function() {alert("UP");});
});
</script>如果你加载了这个,点击并松开,"UP“将会发出警报。但是,如果您拖动然后松开,则不会触发向上。
当mousemove完成时,我如何让mouseup触发,或者我如何检查mousemove事件来确定鼠标左键现在是否关闭?
发布于 2016-04-01 17:59:04
我也遇到过同样的问题。即使我在mousedown处理程序中添加了e.preventDefault(),它仍然没有被解析。
最后,我发现如果我在mousemove处理程序中关闭了以下代码,我的mouseup处理程序就会被正常调用。
mouseDragArea.css({
top: dragAreaPos.y + 'px',
left: dragAreaPos.x + 'px',
width: Math.abs(mouseCurPos.x - mouseClickPos.x) + 'px',
height: Math.abs( mouseCurPos.y - mouseClickPos.y ) + 'px'
});mouseDragArea是一个通过编程创建的元素,它有一个虚线边框,用于显示鼠标单击拖动的矩形区域:
mouseDragArea = $('<div id="mouse-drag-area"></div>');然后,我意识到这个#mouse-drag-area元素位于处理mouseup事件的原始元素之上。因此,在将以下css声明添加到#mouse-drag-area之后,将对其进行排序:
pointer-events:none;换句话说,关键在于您要为哪个元素设置mouseup处理程序。
https://stackoverflow.com/questions/1909760
复制相似问题