Мне нужно навигационное меню, которое отображает изменения страницы в зависимости от кликов и пролистываний.Чтобы выполнить это, я должен был вызвать щелчок, когда я провожу пальцем.Проблема в том, что, когда я делаю это, я больше не могу использовать:
$.mobile.changePage(prevpage, { transition : 'realslide', reverse : true });
со свойством reverse:true
, являющимся важной частью.«swipeleft» может иметь обычный переход, но «swiperight» нуждается в обратном переходе, и я не могу сделать это в HTML с data-transition="reverse"
, потому что это зависит от направления пролистывания.
В настоящее время это мой кодвыглядит (предоставлено пользователем Jasper ).Я не уверен, где я могу связать в обратном переходе в.
$(function(){
var $nav = $('#nav').children().children(),
totNav = $nav.length;
$(document).on('swipeleft', '.ui-page', function() {
var next = ($nav.filter('.active').index() + 1);
if (next === totNav)
return;
$nav.eq(next).children().trigger('click');
}).on('swiperight', '.ui-page', function() {
var prev = ($nav.filter('.active').index() - 1);
if (prev === -1)
return;
$nav.eq(prev).children().trigger('click');
}).on('click', '#nav a', function(e) {
$(this).parent().addClass("active").siblings().removeClass("active");
});
});
Этот вопрос является расширением этого: Обновление меню в jQuery Mobile на основе события свайпа
РЕДАКТИРОВАТЬ: Спасибо всем за вашу помощь!Вот мое окончательное решение:
<script>
$(function(){
var $nav = $('#nav').children().children(),
totNav = $nav.length;
$(document).on('swipeleft', '.ui-page', function() {
var next = ($nav.filter('.active').index() + 1);
var $elem = $nav.eq(next).children();
if (next === totNav)
return;
$.mobile.changePage.defaults.reverse = false;
$elem.trigger('click');
}).on('swiperight', '.ui-page', function() {
var prev = ($nav.filter('.active').index() - 1);
var $elem = $nav.eq(prev).children();
if (prev === -1)
return;
$.mobile.changePage.defaults.reverse = true;
$elem.trigger('click');
}).on('click', '#nav a', function(e) {
var prev = $nav.filter('.active').index();
$(this).parent().addClass("active").siblings().removeClass("active");
var now = $nav.filter('.active').index();
if (prev > now)
$.mobile.changePage.defaults.reverse = true;
else
$.mobile.changePage.defaults.reverse = false;
});
});
</script>