如何检测click()是否是鼠标单击或由某些代码触发?
如何检测click()是否是鼠标单击或由某些代码触发?
使用事件对象的which
属性。 对于代码触发的事件,它应该是undefined
的:
$("#someElem").click(function(e) { if(e.which) { //Actually clicked } else { //Triggered by code } });
这是上面的一个工作示例 。
根据评论更新
当input
元素具有焦点时按Enter键可以触发click
事件。 如果您想区分代码触发的点击和所有其他点击(鼠标或键盘触发),那么上述方法应该可以正常工作。
你应该检查e.originalEvent:
$("#someElem").click(function(e) { if(e.originalEvent === undefined) { //triggered } else { //clicked by user } });
等待一段时间并使用event.isTrusted
– 它受IE9,Opera 12和Firefox Nightly的支持。 Webkit也很可能会支持它。
目前,没有保证的方式知道。