0

我已经看到与此相关的非常相似的问题,但这些问题仅涉及按键事件,而不是像我这样做的鼠标点击。

基本上我试图确定用户是单击鼠标左键还是鼠标右键。我的代码:

$(".class_name").mousedown(function () {

    switch (event.which) {
        case 1: //leftclick
            //...
            break;
        case 3: //rightclick
            //...
            break;
    }
});

这在 Safari 中按预期工作,但在 IE 或 Firefox 中无效。IE 和 FF 就像什么都没发生一样,而 Safari 执行特定点击的代码。jQuery 通常在跨浏览器兼容性方面做得很好,所以我猜我需要以不同的方式格式化代码,但不确定如何准确。

任何帮助将不胜感激。谢谢你的时间。

4

2 回答 2

5

这里的问题是您使用的是全局 window.event对象,而不是 jQuery 的事件对象。 window.event仅适用于某些浏览器,它不是 W3C 标准。

jQuery 对事件对象进行规范化,因此它在所有浏览器中都是相同的。事件处理程序将该 jQuery 事件对象作为参数传递。你应该使用那个。

$(".class_name").mousedown(function (e) {

    switch (e.which) {
        case 1: //leftclick
            //...
            break;
        case 3: //rightclick
            //...
            break;
    }
});
于 2013-04-04T14:06:07.540 回答
3

您忘记将事件变量放在函数调用中。

$(".class_name").mousedown(function (/*HERE*/event) {

switch (event.which) {
    case 1: //leftclick
        //...
        break;
    case 3: //rightclick
        //...
        break;
 }
});
于 2013-04-04T14:06:32.563 回答