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