javascript - 有什么方法可以确定两个事件是否是由于同一操作而触发的?

标签 javascript jquery events onclick onchange

由于表单不同元素上的事件顺序(请参阅 http://jsfiddle.net/fs7norbL/,底部的强制代码),我需要处理复选框的 onchange 和 onclick 事件。

我想知道复选框 onchange 和 onclick 事件是否由于相同的人机交互而发生。对于每次人机交互,我可能只处理其中一个(以先到者为准),但需要能够处理这两种事件类型。

由于长期存在的开放式 Mozilla 错误,event.timestamp 无法执行:https://bugzilla.mozilla.org/show_bug.cgi?id=238041 。 万一我好像没有什么可以用的了。

如何确定两个事件是否由同一人类交互引起。

<小时/>
<form>
    <input type="checkbox"/>

$(':checkbox').click(function() {
    console.log('checkbox click');
});

$(':checkbox').change(function() {
    console.log('checkbox change');
});

$('form').change(function() {
    console.log('form change');
});

最佳答案

您可以在 click 处理程序中触发 change 事件 -> 将回调委托(delegate)给带有一些消息的函数(或者添加状态可从 访问的局部变量单击更改 handle )。

$(':checkbox').click(function() {
    console.log('checkbox clicked');
    this.change();
});

这样你就会知道发生了什么。

关于javascript - 有什么方法可以确定两个事件是否是由于同一操作而触发的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30417164/

相关文章:

javascript - 如何在jquery中获取随机元素?

javascript - 使用 jQuery 对 DOM 节点进行排序 - 当前代码交替反转

javascript - 将 Node.js API 与 AWS Lambda 混合使用

javascript - Closure Compiler 如何使用类型信息来编译更快的 JavaScript?

javascript - 谷歌地图 : Relative to Fixed Positioning

javascript - SmoothDivScroll的 "running ticker"只滚动一次

javascript - jQuery 处理焦点并单击一个元素

c# - Visual Studio 可以为事件自动创建内联本地匿名方法而不是创建具体方法吗?

javascript - 动画 scrollTop 触发滚动事件

javascript - 为什么在 webkit 中没有触发 'beforepaste' 事件?