У меня есть этот код на моем сайте, чтобы вы могли вернуться/вперед, используя салфетки
$(function() {
$(window).on("swipeleft", jqmForward)
.on("swiperight", jqmBack);
});
Проблема заключается в том, что он также возвращается/вперед, когда вы пытаетесь прокручивать то, что уже имеет свой собственный обработчик салфетки (например, галерею слайдов сторонних разработчиков)
Как заставить его работать только на "фоне" (чтобы игнорировать некоторые элементы, у которых есть собственный обработчик салфетки)?
EDIT: Упрощенный код выше, и я пробовал это, но не работает (возможно, потому, что я добавляю его в окно не с одним div)
$('.swiper-wrapper').off();
Я закончил с глобальной переменной allowGlobalSwipe
и динамически отключил ее с помощью Swiper API.
var allowGlobalSwipe = true; // <--
$(function() {
$(window).on("swiperight", jqmBack);
$('#slideContainer').swiper({
onTouchStart: function () { allowGlobalSwipe = false; }, // <--
onTouchEnd: function () { allowGlobalSwipe = true; }
});
});
function jqmBack(e) {
if (!allowGlobalSwipe) return; // <--
var prevpage = $('div.ui-page-active').prevAll('div[data-role="page"]');
if (prevpage.length > 0)
$.mobile.changePage($(prevpage[0]), { transition: "slide", reverse: true }, true, true);
}
touchmove
: $([some elements]).on("touchmove", function (event) {event.stopPropagation();})
. Другие связанные события - touchstart
и touchend
.
$(window).not("skipThis").on(swipeleft, ....