не знаю, почему сенсорные события сработали дважды - PullRequest
3 голосов
/ 27 января 2012

Я использую Jquery Mobile, и мои сенсорные события запускаются дважды. Сначала я подумал, что это может быть совпадение между событиями мыши и событиями касания, но я попытался отсоединить события мыши на планшетах / смартфонах, и эти события по-прежнему запускаются дважды.

Вот мой код

//Tablet Features
            var eventType = {
                swipeleft: '-=100',
                swiperight: '+=100'
            }
            $('#navMenu').bind('swipeleft swiperight', 
                function(e) {
                    $('#prbBtnHolder').animate({left:eventType[e.type]});
                    //alert(e.type);
                }
            );

//Device Detection
        (function () {
            var agent = navigator.userAgent.toLowerCase();
            var isDevice = agent.match(/android/i);

            if (isDevice == 'android') {
                //alert(isDevice);
                $('*').unbind('mousedown').unbind('mouseout').unbind('mousemove').unbind('mouseup');
            }
        })();

Я уже некоторое время пытаюсь понять это, пожалуйста, помогите, если у вас есть идеи.

UPDATE

Мне удалось решить проблему локально, разместив сенсорные обработчики вне метода .ready(). Однако, когда я запускаю страницу на сервере, двойной триггер происходит снова. Теперь я полностью в тупике. Почему две идентичные страницы (буквально идентичные ) ведут себя по-разному локально и на сервере?

Ответы [ 2 ]

0 голосов
/ 22 октября 2014

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

Я определяю глобальный флаг

var bDidPan=true;

и внутри триггера пишет следующее:

if (bDidPan) {
  bDidPan = false; // IT'S IMPORTANT TO PUT THIS FIRST
  //code to execute when triggers
}
else
{
  bDidPan = true;
}

и это помогло. Вы можете сделать трюк с числами (у меня это сработало лучше с числами!)

Надеюсь, это поможет!

0 голосов
/ 17 января 2013

Звучит так, будто вы помещаете свои скрипты в тег <body>. Если вы сделаете это, они будут бежать дважды. У меня случилось то же самое, и я немного постарался из-за неприятностей и разочарования. Убедитесь, что все ваши скрипты находятся внутри тега <head>.

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