似乎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事件来确定鼠标左键现在是否关闭?
发布于 2009-12-16 03:26:40
这是我经常使用的一种模式,通常在所有与鼠标移动相关的事情上都能很好地工作。当用户单击mousedown时,mouseup事件被绑定,这迫使它在用户松开鼠标按键时触发,无论鼠标按键移动了多少。
$('#element').mousedown(function(e) {
// You can record the starting position with
var start_x = e.pageX;
var start_y = e.pageY;
$().mousemove(function(e) {
// And you can get the distance moved by
var offset_x = e.pageX - start_x;
var offset_y = e.pageY - start_y;
return false;
});
$().one('mouseup', function() {
alert("This will show after mousemove and mouse released.");
$().unbind();
});
// Using return false prevents browser's default,
// often unwanted mousemove actions (drag & drop)
return false;
});发布于 2010-11-23 18:38:06
别忘了命名你的事件,否则所有的事件处理程序都将被解除绑定:
$('#element').bind('mousedown.namespace', function(e) {
$(document).one('mouseup', function() {
callback_func();
$(document).unbind('mousedown.namespace');
});
});发布于 2010-08-30 23:36:22
从JQuery 1.4开始,您需要用$('document')替换$()。实际上,我正在使用它在JQuery UI对话框中创建一个菜单,它似乎可以捕获鼠标移动事件。所以我简单地用我的容器div替换$() (看起来像$('#myContainerDiv'))。这似乎也很好用。
https://stackoverflow.com/questions/1909760
复制相似问题