Можно ли отменить результирующее событие клика в событии mousedown?или передать информацию? - PullRequest
7 голосов
/ 18 мая 2011

по непонятным причинам мне нужно иметь возможность отменить событие click через событие mousedown.

Коротко; Я создаю контекстное меню в событии mousedown, однако, когда пользователь нажимает на страницу, контекстное меню должно исчезнуть.

Я не могу использовать событие mousedown для клика в этом сценарии, поскольку я хочу, чтобы пользователь мог щелкать ссылки внутри меню (полный щелчок никогда не приведет к элементам меню на основе <a>).

Если это поможет, можно применить jQuery.

Я хотел бы либо иметь возможность предотвратить событие click из начального mousedown, либо передать информацию о событии click (через originalEvent или иным способом).

1012 * ТИА *

Ответы [ 3 ]

3 голосов
/ 18 мая 2011

Кажется невозможным, ни FF, ни Opera не отменяли наступление click, когда было предотвращено в mousedown и / или mouseup (в качестве примечания: щелчок отправляется после mouseup, если выполнены определенные условия).контрольный пример: http://jsfiddle.net/ksaeU/

1 голос
/ 25 февраля 2013

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

$(document).one('mousedown.ct', null, function() { cmenu.hide(); return false; });
cmenu.bind('mousedown', function(e) { e.stopImmediatePropagation(); });

И в функции hide() я снова связываю mousedown.ct, если он был закрыт из-за щелчка по элементу.

0 голосов
/ 25 мая 2011

Эй, я думаю, это то, что вы пытаетесь сделать со своим кодом. Если нет, прошу прощения, возможно, я неправильно понял вопрос. Я использовал jQuery, чтобы сделать это: http://jsfiddle.net/jackrugile/KArRD/

$('a').bind({
    mousedown: function(){
        // Do stuff
    },
    click: function(e){
        e.preventDefault();
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...