Не удается использовать обработчик событий нажатия jquery для обнаружения щелчка правой кнопкой мыши - PullRequest
6 голосов
/ 08 сентября 2011

Пытаясь обнаружить щелчок правой кнопкой мыши с помощью jquery, я заметил, что обработчик события щелчка, похоже, не срабатывает при щелчке правой кнопкой мыши, в отличие от обработчика событий mousedown или mouseup.

Например, после щелчка правой кнопкой мыши на элементе test, появляются следующие оповещения «test!»:

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

Однако следующее не :

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

Кто-нибудь знает почему?

Ответы [ 4 ]

12 голосов
/ 08 сентября 2011

Когда вы запускаете mousedown, у четного выстрела есть 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 и проверьте наличие случаев.

8 голосов
/ 08 сентября 2011

Как говорится в статье :

Нет событий click для щелчков правой кнопкой мыши в любом браузере.

Таким образом, в большинстве браузеров у вас остаются mousedown и mouseup.

0 голосов
/ 03 октября 2012

Я также попробовал следующий код, чтобы поймать щелчок правой кнопкой мыши для определенного класса элементов

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

Этот код не всегда ловит правый клик.

0 голосов
/ 08 сентября 2011

Не уверен, с каким браузером (ами) вы тестировали, но в соответствии с MSDN onclick срабатывает ", когда пользователь нажимает левую кнопку мыши".Т.е. по определению это не происходит для правых (или средних) кликов.Учитывая, что это на MSDN, вы можете ожидать, что IE будет вести себя таким образом, независимо от того, что делают другие браузеры.

(Onclick также запускает некоторые не связанные с мышью вещи, такие как изменение определенных элементов формы с помощью клавиатуры и т. Д.)

Я знаю, что jQuery пытается нормализовать поведение между браузерами, но если браузер вообще не запускает событие ...

Существует по крайней мере один плагин jQuery, который, как мне известно, реализует правильно-click: http://abeautifulsite.net/blog/2008/05/jquery-right-click-plugin/ (я не использовал его, но выглядит хорошо, за исключением того, что отмечает, что Opera его не поддерживает).

...