首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
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

Stack Overflow用户

发布于 2016-04-01 17:59:04

我也遇到过同样的问题。即使我在mousedown处理程序中添加了e.preventDefault(),它仍然没有被解析。

最后,我发现如果我在mousemove处理程序中关闭了以下代码,我的mouseup处理程序就会被正常调用。

代码语言:javascript
运行
复制
     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是一个通过编程创建的元素,它有一个虚线边框,用于显示鼠标单击拖动的矩形区域:

代码语言:javascript
运行
复制
    mouseDragArea = $('<div id="mouse-drag-area"></div>');

然后,我意识到这个#mouse-drag-area元素位于处理mouseup事件的原始元素之上。因此,在将以下css声明添加到#mouse-drag-area之后,将对其进行排序:

代码语言:javascript
运行
复制
    pointer-events:none;

换句话说,关键在于您要为哪个元素设置mouseup处理程序。

票数 0
EN
查看全部 7 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1909760

复制
相关文章

相似问题

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