JQuery связать стрельбу несколько раз? - PullRequest
6 голосов
/ 28 января 2012
$(".container").on("contextmenu", ".photos-bottom .albums li", function(e) {

$('html').bind('click', function (event) {
    alert(id);
});

return false;
});

, когда я щелкаю правой кнопкой мыши (для контекстного меню) несколько раз, а затем щелкаю левой кнопкой мыши по html один раз, появляется предупреждение о количестве нажатий правой кнопкой мыши.

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

Почему это так?

Ответы [ 2 ]

19 голосов
/ 28 января 2012

$('html').unbind('click').bind('click') исправлено.

4 голосов
/ 28 января 2012

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

Вы должны либо:

a) отменить привязку события, когда контекстное меню закрыто, или

b) привязать событие click за пределами вашей функции обратного вызова contextmenu.

...