javascript - jQuery 检测元素内部的 mousedown,然后在元素外部检测 mouseup

标签 javascript jquery event-handling

我有类似于绘图 Canvas 的东西,我在鼠标松开时捕获它的状态以用于撤消目的。 Canvas 不是全屏的,因此您可以使用画笔进行绘制并在 Canvas 外释放。像这样的事情:

$("#element").mousedown(function(){
  $(document).mouseup(function(){
    //do something
  }); 
});

但这当然行不通。普通的 $(document).mouseup 也不起作用,因为我有许多其他 UI 元素,并且每次单击 UI 元素时它都会保存状态。

有什么想法吗?

最佳答案

var isDown = false;

$("#element").mousedown(function(){
    isDown = true;
});

$(document).mouseup(function(){
    if(isDown){
        //do something
        isDown = false;
    }
}); 

为了简单起见,我将 isDown 放在全局命名空间中。在生产中,您可能希望隔离该变量的范围。

关于javascript - jQuery 检测元素内部的 mousedown,然后在元素外部检测 mouseup,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4309912/

相关文章:

javascript - 浏览器的 "localStorage.generator++"运算符是原子的吗?

javascript - 使用 val() 获取空值

jquery - $.post 总是返回未定义

javascript - 当某些像素进入视口(viewport)时动画(Pen by Bramus)

javascript - jQuery $.each(arr, foo) 与 $(arr).each(foo)

Qt 事件循环和单元测试?

javascript - 动态 InfoWindows 和 Google Fusion Maps 中的动态模板有什么区别?

javascript - 使用 PKCS #11 在 Webapp 中签署 PDF

jquery - 加载外部 HTML 并为 HTML 中声明的元素添加事件处理程序

javascript - jquery 表格行点击功能