如果释放鼠标时内部元素未悬停,则防止触发“单击”的正确方法
Correct way to prevent triggering `click` if inner element is not hovered when mouse is released
当用户单击对话框,然后将鼠标移动到对话框外部并释放它时,我需要防止隐藏模式对话框。对话框位于注册click
事件的外部div中。以下是模式对话框及其设置的示例。
所以我做了以下工作:
var pointerDownElement = null;
$('.d1').on('mousedown', function(event) {
// this is how I do it to prevent triggering of click event
pointerDownElement = event.target;
// this is how a browser does it
pointerDownElement = event.currentTarget;
});
$('.d1').on('mouseup', function(event) {
var element = event.target;
if (element === pointerDownElement) {
console.log('triggering click');
}
});
这种方法正确吗?
你肯定走在了正确的轨道上。略有修改的代码:
var pointerDownElement = null;
$('.d1').on('mousedown', function(event) {
event.preventDefault();
pointerDownElement = event.currentTarget;
return false;
});
$('.d1').on('mouseup', function(event) {
if (event.target=== pointerDownElement) {
console.log('triggering click');
}
});
如果只使用一次变量,则无需为其赋值。此外,event.prventDefault();并返回false;将保证事件的默认行为不会发生(并不是说通常有一个用于mousedown的行为,但我假设您有理由包含此代码)。
相关文章:
- 如何在单击复选框后调用控制器方法
- 我该如何阻止单击方法多次工作
- Ajax.BeginForm标识在OnComplete方法中单击的按钮
- 在上下文菜单项单击上显示侧边栏/弹出窗口的最佳方法是什么
- 操作方法:第一次单击动画 1,第二次单击动画 2
- 如何使用 javascript 而不是使用控制器中的方法在 rails 中呈现部分按钮单击
- 在浏览器关闭时,单击确认对话框中的“停留在页面上”,执行一个方法
- Jquery Ajax调用,以便在单击a href时将数据发送到该方法
- 如果释放鼠标时内部元素未悬停,则防止触发“单击”的正确方法
- TreeView在单击展开而不是服务器ping时执行javascript方法
- 使用.load方法后,请收听单击事件
- 单击按钮后需要jQuery方法重定向-ASP.NET、VB.NET、jQuery、Javascript
- 是否有任何方法可以在单击“加载前确认”对话框的“确定”按钮后执行某些操作
- 单击按钮时调用java方法
- now.js-对象没有方法,但在jquery中单击事件工作
- 在Chrome扩展程序中从网页按钮单击调用JavaScript方法
- 如何通过指定的元素而不是 $(this) 调用 jquery 单击方法
- 如何使用单击方法在元素内部添加单击方法
- 如何将单击方法添加到无序列表中的 href 链接
- 称“单击()“;方法返回undefined,尽管该元素确实存在