javascript - 单击事件 - 获取 mousedown 开始而不是 mouseup 的目标

标签 javascript jquery events mouse

在单击事件(附加到文档)中,我想确定用户开始按下鼠标按钮时的目标。

例子:

  • 用户在自定义弹出窗口上按下鼠标按钮
  • 用户将鼠标移到弹出窗口外并松开

在那种情况下,下面的代码将在弹出窗口外返回一个目标,但我想弄清楚它是否在弹出窗口内开始

$(document).click(function(e)
{
    // will return the target during *releasing the mouse button*
    // but how to get the target where the *mouse press started*
    console.log(e.target); 
}

当然,我可以通过监听 mousedown 并将其保存在一个变量中来手动跟踪它 - 但我宁愿使用一些native,因为:

  • 更少的代码
  • 我可能会遗漏边缘情况

Jquery 或 vanilla JavaScript 答案对我来说都很好(但更喜欢 vanilla)

最佳答案

您可以将 mousedown 与 mouseup 函数一起使用,并将它们都保存到全局变量中,然后在 if 语句中比较它们。

let downTarget, upTarget;

$(document).mousedown(function(e) {
    downTarget = e.target;
});

$(document).mouseup(function(e) {
    upTarget = e.target;
});

if(upTarget === downTarget){ 
    *do stuff*
};

关于javascript - 单击事件 - 获取 mousedown 开始而不是 mouseup 的目标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56009448/

相关文章:

javascript - 如何通过使用 jQuery 变小来创建 div 慢慢落到某物上的印象?

javascript - 如何避免 Javascript 变量在页面刷新时被重置?

javascript - momentjs toDate() 日期返回与 format() 日期不同

javascript - 如何使用 jQuery 传递参数/参数?

jquery - twitter 像 asp.net mvc 中的警报 jquery

c++ - 使用匿名或 lambda 函数连接到 Boost Signals2 信号

c# - 将 WPF 事件映射到 Windows 窗体事件

javascript - ajax 请求在 localhost wampserver 中不起作用

javascript - 当用户上下滚动页面时,让一个小箭头从左向右移动

events - 简化 mouseover/mouseout jQuery 事件? (单个事件处理程序?)