如何检测click()是否是鼠标单击或由某些代码触发?

时间:2011-10-03 12:56:44

标签: javascript jquery

如何检测click()是单击鼠标还是由某些代码触发?

3 个答案:

答案 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也很可能会支持它。

目前,无法保证知道。