Замените все события клика с нажатием в JQuery Mobile, чтобы ускорить

Я занимаюсь разработкой мобильного приложения, используя phonegap и jquery mobile. Я создал макет с данными-ролями и т. Д. ... и в этом приложении у меня есть много кнопок, подобных приведенным ниже, для перехода на разные страницы. (Я специально не связываю события нажатия с этими кнопками, они просто используют href для магии).

<code><a data-role="button" href="#page6">
    go to page 6
</a>
</code>

Проблема с этими кнопками в том, что они невероятно медленные, с задержкой в 400 мс, о которой говорит каждый1.Is it possible to replace all events on these buttons with tap/vclick/touchstart (Что бы ни было лучше), чтобы они ответили мгновенно? Им никогда не придется иметь дело с двойными нажатиями или драгрелизингом людей ...

Спасибо

Ответы на вопрос(5)

Этот плагин очень поможет

$.fn.addTouch = function() {
    if ($.support.touch) {
            this.each(function(i,el){
                    el.addEventListener("touchstart", iPadTouchHandler, false);
                    el.addEventListener("touchmove", iPadTouchHandler, false);
                    el.addEventListener("touchend", iPadTouchHandler, false);
                    el.addEventListener("touchcancel", iPadTouchHandler, false);
            });
    }
};

http://code.google.com/p/jquery-ui-for-ipad-and-iphone/

 05 апр. 2012 г., 19:29
неужели jQuery Mobile не раскрывает эти события? Не уверен, как это будет работать для замены кликов, а не для добавления функциональности вместо ее замены.
 Hans Wassink05 апр. 2012 г., 19:49
Спасибо за указание на это, но это не тот ответ, который я ищу, к сожалению ....

Этот скрипт проверит, активировано ли сенсорное устройство, а затем заменит события щелчка событиями касания. Он добавляет сенсорные события в обе ссылки и атрибуты элемента JavaScript onclick. Скрипт был протестирован на Android, iPhone, iPad и Windows Phone.

//jQuery doc.ready
$(function () { 
    addTouchEvents();   
});

addTouchEvents = function() {
    var isTouchDevice = (('ontouchstart' in window) || window.DocumentTouch && document instanceof DocumentTouch);

    if (isTouchDevice) {
        //replace link clicks with ontouchend events for more responsive UI
        $("a", "[onclick]").on("touchstart",function(e) {
            $(this).trigger("click");
            e.preventDefault();
            return false;
        });
    }
}
Решение Вопроса

я написалутилита JS под названием Lightning Touch чтобы избавиться именно от этой задержки.Вот это я (плохо) демонстрирую.

Основой этой библиотеки является Google fastButtons, который, по-видимому, больше недоступен (или, если это так, URL-адрес изменился), но раньше был доступен по лицензии Creative Commons от code.google.com.

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

В презентацииБрайан Леру имелслайд о проблеме задержки 400 мс, в которой говорилось, что «PPL решил эту проблему».  Он связал несколько проектов, на которые вы могли бы взглянуть, если Lightning Touch не работает в вашей ситуации. И если это не удастся, вы можете попробовать просмотретьэтот другой список, который он связал в той же презентации.

Надеюсь, что где-то есть решение для вас. (И если Lightning Touch не работает, я хотел бы знать точно, почему я могу улучшить его.)

 08 мая 2012 г., 15:28
Рад, что все получилось. Если вы в конечном итоге используете утилиту на производственном сайте, дайте мне знать, и я добавлю ссылку на сайт в README.
 17 июл. 2013 г., 22:35
Я также пытаюсь поместить свою ссылку в элемент списка
 17 июл. 2013 г., 22:22
Привет @Trott Я реализовал библиотеку быстрых кнопок и получил демо-работу. Однако, когда я установил связь с библиотекой jQuery Mobile, возникают проблемы, такие как изначально не щелкающая ссылка и «страница загрузки с ошибкой». отображение сообщений. Любые советы, как обойти это?
 10 июн. 2013 г., 04:46
Это код Google Fast Buttons -developers.google.com/mobile/articles/fast_buttons
 Hans Wassink08 мая 2012 г., 10:57
Спасибо, человек, особенно с тех пор, как вопрос был задан несколько недель назад :) Это действительно сработало, и, изучая ваш код, я узнал несколько хитрых трюков. тата

попробуйте эту библиотеку:quojs это отлично сработало для меня.

Вот пример этого (функция касания довольно быстрая). Здесь я переключаю классы:

$("#man").touch(function(){
    switchGender(true);
});

$("#woman").touch(function(){
    switchGender(false);
});

$(".next").touch(function(){
    nextPage();
});
 30 дек. 2012 г., 09:27
Спасибо за указание на это.

Этот крошечный код должен помочь:

$("a").on("tap",function(e){
                         $(this).trigger("click");
                         e.preventDefault();
                         return false;
                         });

Поместите это в

$(document).on("ready",function(){

и вуаля!

 06 мая 2014 г., 17:36
включено («нажмите») в jQuery mobile. Для обычного JQuery вам нужно будет включить («touchend»)

Ваш ответ на вопрос