Вопрос по cordova, jquery, jquery-mobile – Замените все события клика с нажатием в JQuery Mobile, чтобы ускорить

5

Я занимаюсь разработкой мобильного приложения, используя 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   ответов
0

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

$.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/

Спасибо за указание на это, но это не тот ответ, который я ищу, к сожалению .... Hans Wassink
неужели jQuery Mobile не раскрывает эти события? Не уверен, как это будет работать для замены кликов, а не для добавления функциональности вместо ее замены.
0

Этот скрипт проверит, активировано ли сенсорное устройство, а затем заменит события щелчка событиями касания. Он добавляет сенсорные события в обе ссылки и атрибуты элемента 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;
        });
    }
}
13

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

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

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

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

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

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

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

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

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

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

$$(".next").touch(function(){
    nextPage();
});
Спасибо за указание на это.
2

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

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

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

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

и вуаля!

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

Похожие вопросы