jQuery(event.which),mousedown浏览器兼容性

时间:2013-04-04 14:03:19

标签: jquery

我见过与此相关的非常相似的问题,但这些问题只涉及按键事件,而不是按照我的方式点击鼠标。

基本上我正在尝试确定用户是否单击了鼠标左键或右键。我的代码:

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

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

这适用于Safari,但不适用于IE或Firefox。 IE& FF表现得好像什么也没发生,而Safari执行特定点击的代码。 jQuery通常很适合跨浏览器兼容性,因此我猜我需要以不同的方式格式化代码,但不确定具体如何。

非常感谢任何帮助。谢谢你的时间。

2 个答案:

答案 0 :(得分:5)

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

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

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

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

答案 1 :(得分:3)

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

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

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