如何检测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也很可能会支持它。

目前,没有保证的方式知道。