jquery проблема с мобильным касанием, если нажать несколько раз - PullRequest
0 голосов
/ 04 августа 2011

Все, что мне нужно, это обновить страницу и передать параметр обратно моему контроллеру индекса, но сдвинуть страницу вверх.

Если я нажму один раз, нет проблем. Если я продолжаю нажимать Refresh, то он буквально удваивает вызов каждый раз, когда я нажимаю его. Так что, если я нажимаю 3 раза, он вызывает представление индекса @ 4 раза

$(document).ready(function(){
    $(".ui-btn-right").bind('tap vclick',function(event, ui){
        event.preventDefault();
    //  alert("saw tap");
        $.mobile.changePage( "/app/Person/index?refresh_view=true", { transition: "slideup", reloadPage: true} );
     });

});

И ссылка:

<a class="ui-btn-right" data-theme="b" href="/app/Person/index?refresh_view=true" data-transition="slideup">Refresh</a>

Ответы [ 2 ]

0 голосов
/ 04 августа 2011

Была проблема с Beta 1 и vclick, они исправили проблему в Beta 2:

Backtrack: Мы переключились с vclick, чтобы щелкать по ссылкам

В бета-версии 1 мы решили использовать наше пользовательское событие vclick для обработки ссылок Ajax, чтобы улучшить скорость отклика и скрыть панель URL на iPhone иТелефоны Android.Несмотря на то, что мы провели немало тестов, прежде чем приступить к бета-версии 1, мы начали слышать отзывы о том, что это изменение вызывает некоторые существенные проблемы в дикой природе, в том числе:

  • Несколько событий щелчка, вызывающих навигацию иПроблема элемента формы. В некоторых ситуациях при нажатии на элемент события касания / нажатия, кажется, запускаются дважды по ссылкам, и это связано с крайними случаями, когда цель события касания и события мыши не совпадают из-за того, как браузеры рассчитывают допускидля этих событий.Это наиболее заметно в Android 2.1, но в разной степени затрагивает большинство браузеров на основе WebKit, когда события касания происходят вблизи края элемента.
  • Обработчики щелчков в пользовательских сценариях больше не «работают» - если сценарий, связанный только с событиями щелчков в документе, глобальная функция vclick может создавать помехи, поскольку события касания могут заменять события щелчков, поэтому события не будутПо-видимому, триггер.
0 голосов
/ 04 августа 2011

jQuery mobile уникален тем, что при изменении страницы ни один из элементов в DOM не удаляется.Поскольку элементы не удаляются, их события остаются там же.Я предполагаю, что ваша $(document).ready( ... ) функция вызывается на каждой новой странице.Таким образом, вы добавляете новое событие в элемент .ui-btn-right, хотя остальные все еще там.Попробуйте это:

$(document).ready(function(){
    $(".ui-btn-right").bind('tap vclick',function(event, ui){
        event.preventDefault();
    //  alert("saw tap");
        $('ui-btn-right').unbind('tap vclick');
        $.mobile.changePage( "/app/Person/index?refresh_view=true", { transition: "slideup", reloadPage: true} );
     });

});

Теперь, когда вы меняете страницы, событие удаляется, поэтому при повторном вызове функции $(document).ready( ... ) дубликатов не будет.

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