首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何让mouseup在鼠标移动完成后启动

如何让mouseup在鼠标移动完成后启动
EN

Stack Overflow用户
提问于 2009-12-16 03:23:56
回答 7查看 20.3K关注 0票数 18

似乎mouseup事件只有在不与mousemove一起使用时才会被触发。换句话说,按下鼠标左键并松开,鼠标向上移动就会被触发。但是,如果您在图像上拖动鼠标,然后松开鼠标,则不会触发鼠标向上移动。下面是一个显示此行为的示例:

代码语言:javascript
运行
复制
<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事件来确定鼠标左键现在是否关闭?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2009-12-16 03:26:40

这是我经常使用的一种模式,通常在所有与鼠标移动相关的事情上都能很好地工作。当用户单击mousedown时,mouseup事件被绑定,这迫使它在用户松开鼠标按键时触发,无论鼠标按键移动了多少。

代码语言:javascript
运行
复制
$('#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;
});
票数 25
EN

Stack Overflow用户

发布于 2010-11-23 18:38:06

别忘了命名你的事件,否则所有的事件处理程序都将被解除绑定:

代码语言:javascript
运行
复制
$('#element').bind('mousedown.namespace', function(e) {
    $(document).one('mouseup', function() {
        callback_func();
        $(document).unbind('mousedown.namespace');
    });
 });
票数 5
EN

Stack Overflow用户

发布于 2010-08-30 23:36:22

从JQuery 1.4开始,您需要用$('document')替换$()。实际上,我正在使用它在JQuery UI对话框中创建一个菜单,它似乎可以捕获鼠标移动事件。所以我简单地用我的容器div替换$() (看起来像$('#myContainerDiv'))。这似乎也很好用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1909760

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档