假设我定义了一个点击处理程序:

$("#foo").click(function(e){

});

在函数处理程序中,我如何判断事件是以编程方式触发还是由用户触发?

最佳答案

您可以查看事件对象 e 。如果该事件是由真正的点击触发的,您将得到 clientXclientYpageX 、 0x251812231343 141 和 2143141 之类的数字 141 和 2143 等 2141 等数字 213 等。这些数字与触发点击时的鼠标位置有关,但即使点击是通过键盘启动的,它们也可能存在。如果事件是由 pageY 触发的,那么您将不会在 e 中获得通常的位置值。您还可以查看 $x.click() property ,如果事件来自 e ,则不应该存在。

也许是这样的:

$("#foo").click(function(e){
    if(e.hasOwnProperty('originalEvent'))
        // Probably a real click.
    else
        // Probably a fake click.
});

这是一个可以玩的小沙箱:http://jsfiddle.net/UtzND/

关于jquery - 在 jQuery 中,如何区分程序化点击和用户点击?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6674669/

10-13 09:29