Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Управление событиями мыши (https://javascript.ru/forum/misc/24406-upravlenie-sobytiyami-myshi.html)

photos-masters 28.12.2011 18:48

Управление событиями мыши
 
Здравтсвуйте

Работаю над контекстным меню системы Redmine для тачскринов, которое вызывается правой кнопкой мыши.
В своей работе использую Jquery Mobile, который умеет отлавливать события нажатия и удерживания пальца на экране тачскрина.
На событие удерживания пальца на экране я повесил правый клик, который генерирую с помощью того же Jquery. Меню выпадает как положено.
Но вот беда, когда я отпускаю палец с экрана то меню тут же пропадает потому, что снова срабатывает событие нажатия.
В чём может быть проблема и как я могу отключить то событие которое возникает после удерживания пальца?

Спасибо за помощь
Виталий

Livaanderiamarum 28.12.2011 19:02

Сделайте чтобы четные разы срабатывания события происходило одно действие, а нечетные разы срабатывания события происходило другое действие)

photos-masters 28.12.2011 19:35

Я так понимаю нужно использовать bind и unbind. Но как можно в обработчике одного события заблокировать другое событие, а после выхода из обработчика возобновить то, заблокированное?

Livaanderiamarum 29.12.2011 01:01

Цитата:

Сообщение от photos-masters (Сообщение 146904)
Я так понимаю нужно использовать bind и unbind. Но как можно в обработчике одного события заблокировать другое событие, а после выхода из обработчика возобновить то, заблокированное?

если у вас jquery 1.7 тогда привязывайте событие методом

$(element).on('click.name', function(){
//бла бла бла
} )

а когда хотите выключить его то пишите
$(element).off('click.name')
чтобы снова включить пишите
$(element).on('click.name')


вот это вот name это идентефикатор события, чтобы jquery знала какое именно событие отключать и включать. пишется оно без пробелов через точку после названия события, в данном случае click

попробуйте, если в мобайл версии нет этих методов on off? тогда скажу другой способ

photos-masters 29.12.2011 11:52

Я решил задачу следующим образом:
Ввел глобальную переменную
Flag = false

Далее в обработчике удерживания пальца на экране taphold присвоил этой переменной значение true, а в обработчике нажатия пальцем на экран tap прописал следующее:
if(flag == true){
  flag = false;
  return false
}


Теперь, то событие tap которое срабатывает после того, как пользователь отпустил палец не будет срабатывать и контекстное меню никуда не исчезнет.

Livaanderiamarum 29.12.2011 12:36

да, я думал посоветовать такой вариант, то каким то он некрасивым мне показался.


Часовой пояс GMT +3, время: 13:08.