Как обнаружить щелчок левой кнопкой мыши в любом месте документа с помощью jQuery? - PullRequest
13 голосов
/ 08 июня 2009

У меня есть это прямо сейчас:

$(document).click(function(e) { alert('clicked'); });

В Firefox это событие запускается, когда я щелкаю левой кнопкой мыши ИЛИ щелкаю правой кнопкой мыши. Я хочу, чтобы он срабатывал только при щелчке левой кнопкой мыши.

Работает ли прикрепление обработчика щелчка к документу иначе, чем присоединение его к другим элементам? Что касается других элементов, то, похоже, срабатывает только левый щелчок.

Есть ли способ обнаружить только левых щелчков кроме просмотра кнопки e.button, которая зависит от браузера?

Спасибо

Ответы [ 4 ]

24 голосов
/ 08 июня 2009

Попробуйте

$(document).click(function(e) { 
    // Check for left button
    if (e.button == 0) {
        alert('clicked'); 
    }
});

Однако, по-видимому, существует некоторая путаница относительно того, возвращает ли IE 1 или 0 в качестве щелчка левой кнопкой мыши, возможно, вам придется проверить это:)

Далее читайте здесь: JQuery Gotcha

EDIT : пропущен бит, в котором вы просили не использовать e.button. Извините!

Тем не менее, пример здесь возвращает один и тот же идентификатор независимо от его просмотра в FF или IE и использует кнопку e.button. мог бы обновить фреймворк jQuery? Другой ответ заключается в том, что старые версии IE возвращают другое значение, что было бы больно. К сожалению, у меня есть только IE 7/8 для тестирования.

2 голосов
/ 12 декабря 2009

Вы можете просто зарегистрироваться для участия в событии contextmenu, например:

$(document).bind("contextmenu",function(e){
    return false;
});

Взято из: http://www.catswhocode.com/blog/8-awesome-jquery-tips-and-tricks

0 голосов
/ 08 июня 2009

Нет не зависящего от браузера способа обнаружения только левых кликов. Вы можете использовать этот код, который работает в браузерах IE и не IE:

$("#element").live('click', function(e) {

    if( (!$.browser.msie && e.button == 0) || ($.browser.msie && e.button == 1) ) {

        // Left mouse button was clicked (all browsers)

    }

});

Взято из: http://abeautifulsite.net/notebook/99

0 голосов
/ 08 июня 2009

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

Однако это будет означать, что это не так: http://abeautifulsite.net/notebook/99

Поскольку вы говорите, что щелчок работает правильно везде, кроме «документа», вы пробовали 100% -ное деление на документе, чтобы поймать клик?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...