Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 28.12.2011, 18:48
Интересующийся
Отправить личное сообщение для photos-masters Посмотреть профиль Найти все сообщения от photos-masters
 
Регистрация: 07.12.2011
Сообщений: 11

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

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

Спасибо за помощь
Виталий
Ответить с цитированием
  #2 (permalink)  
Старый 28.12.2011, 19:02
Профессор
Посмотреть профиль Найти все сообщения от Livaanderiamarum
 
Регистрация: 25.12.2011
Сообщений: 786

Сделайте чтобы четные разы срабатывания события происходило одно действие, а нечетные разы срабатывания события происходило другое действие)
Ответить с цитированием
  #3 (permalink)  
Старый 28.12.2011, 19:35
Интересующийся
Отправить личное сообщение для photos-masters Посмотреть профиль Найти все сообщения от photos-masters
 
Регистрация: 07.12.2011
Сообщений: 11

Я так понимаю нужно использовать bind и unbind. Но как можно в обработчике одного события заблокировать другое событие, а после выхода из обработчика возобновить то, заблокированное?
Ответить с цитированием
  #4 (permalink)  
Старый 29.12.2011, 01:01
Профессор
Посмотреть профиль Найти все сообщения от Livaanderiamarum
 
Регистрация: 25.12.2011
Сообщений: 786

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

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

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


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

попробуйте, если в мобайл версии нет этих методов on off? тогда скажу другой способ
Ответить с цитированием
  #5 (permalink)  
Старый 29.12.2011, 11:52
Интересующийся
Отправить личное сообщение для photos-masters Посмотреть профиль Найти все сообщения от photos-masters
 
Регистрация: 07.12.2011
Сообщений: 11

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

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


Теперь, то событие tap которое срабатывает после того, как пользователь отпустил палец не будет срабатывать и контекстное меню никуда не исчезнет.
Ответить с цитированием
  #6 (permalink)  
Старый 29.12.2011, 12:36
Профессор
Посмотреть профиль Найти все сообщения от Livaanderiamarum
 
Регистрация: 25.12.2011
Сообщений: 786

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Управление событиями тачскрина photos-masters Мобильный JavaScript 3 26.03.2012 13:23
Смена картинок в зависимости от положения курсора мыши antonio_vrn Events/DOM/Window 3 31.05.2011 22:07
Имитация нажатия кнопки мыши Mantell Общие вопросы Javascript 3 19.02.2009 17:03
Как имитировать событие мыши Andrey_V Общие вопросы Javascript 4 10.11.2008 16:39
FireFox: onmouseover не работает при зажатой кнопке мыши no. Общие вопросы Javascript 4 19.08.2008 13:43