无法使用 jquery 的单击事件处理程序来检测右键单击



在尝试用jquery检测鼠标右键时,我注意到click事件处理程序似乎不会随着鼠标右键而触发,而mousedown或mouseup事件处理程序则会。

例如,在testdiv上单击右键后,下面的提示"testing!":

$('#test').mousedown(function(e) {
    alert('testing');
});

然而,以下是不是:

$('#test').click(function(e) {
    alert('testing!');
});

有人知道为什么吗?

当您按下鼠标时,甚至触发了event.which

从这里开始:如何用jQuery区分鼠标左键和右键

$('#element').mousedown(function(event) {
    switch (event.which) {
        case 1:
            alert('Left mouse button pressed');
            break;
        case 2:
            alert('Middle mouse button pressed');
            break;
        case 3:
            alert('Right mouse button pressed');
            break;
        default:
            alert('You have a strange mouse');
    }
});

所以不使用。click(),而是使用mousedown并检查大小写

正如本文所说:

在任何浏览器中都没有click事件用于右键单击。

所以你剩下的mousedownmouseup在大多数浏览器

不确定你测试过哪个浏览器,但根据MSDN的onclick触发"当用户点击鼠标按钮"。也就是说,根据定义,右击(或中击)不会发生这种情况。考虑到这是在MSDN上,你可以期望IE的行为方式,而不管其他浏览器做什么。

(Onclick也会触发某些非鼠标的事情,比如用键盘改变某些表单元素,等等)

我知道jQuery试图规范浏览器之间的行为,但如果浏览器根本不触发事件…

至少有一个jQuery插件,我知道实现右键:http://abeautifulsite.net/blog/2008/05/jquery-right-click-plugin/(我没有使用它,但它看起来不错,除了它注意到Opera不支持它)。

我还尝试了下面的代码来捕捉鼠标右键点击某些元素类

$(".brick").mousedown(function (event) {
            if (event.which === 3) {
                currentRightClickedTileID = $(this).attr("id");
            }
        });

此代码并不总是捕捉到右键。

相关内容

  • 没有找到相关文章

最新更新