jQuery: обходной путь, при котором сенсорное движение не срабатывает при перетаскивании пальцем по элементам

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

mousedown и mousemove работают, как и ожидалось, но для мобильных устройств touchmove срабатывает только на первой панели, на которую я перемещаю палец.

Я понимаю, что это из-за того, как работает тачмод, но я изо всех сил пытаюсь найти обходной путь для того, чего я пытаюсь достичь, то есть знаю, когда были затронуты все 6 панелей.

Пример (работает с мышью, но попробуйте на мобильном телефоне) http://jsfiddle.net/xT7n7/3/embedded/result/

Соответствующий код:

// when one of the 6 panels is moused over
$("div.panel").bind("mousemove", (function () {
    if (is_mouse_down) {

        total_hits++;

        $("body").append('<p>Panel has been hit</p>');

        if ($(this).hasClass('win')) {
            win_hits++;
        }

        $(this).unbind('mousemove');
    }
}));

// when one of the 6 panels is 'touched'
$("div.panel").bind("touchmove", (function () {

    total_hits++;

    $("body").append('<p>Panel has been hit</p>');

    if ($(this).hasClass('win')) {
        win_hits++;
    }

    $(this).unbind('touchmove');
}));

РЕДАКТИРОВАТЬ: Согласно комментарию, я попытался изменить код, следуя рекомендациям в этом посте ( http://www.devinrolsen.com/basic-jquery-touchmove-event-setup/), но это не имело никакого значения.

РЕДАКТИРОВАТЬ 2: Похоже, что я могу обойти это, проверяя все элементы холста на mouseup / touchend и сравнивая их с пустым (нетронутым) экземпляром холста, используя toDateURL()

Скрипка: http://jsfiddle.net/xT7n7/10/

0 ответов

Другие вопросы по тегам