AGGIORNAMENTO: Sono riuscito a far funzionare il mio scroller come desiderato ma mi sento come se avessi violato il problema reale e mi piacerebbe se qualcuno avesse una risposta più solida, l'ho aggiornata e annotato nei frammenti sotto il nuovo jQuery che sto usando.iscroll scrollToElement non aggiornando la variabile currPage
sto usando iScroll-4 (http://cubiq.org/iscroll-4) per un/Android web app per iPad, tutto funziona perfettamente con i colpi e lo scorrimento ma ho un sommario all'inizio delle app che consente agli utenti di passare a aree specifiche del scroller -
Sto utilizzando la funzione iScroll scrollToElement(element, duration)
per passare alle diverse aree. Utilizzare anche scrollToPage(page, duration)
per consentire all'utente di spostarsi manualmente avanti e indietro di una pagina alla volta.
Mentre si guarda la console registra i currPageX
aggiornamenti variabili quando a navigare con la funzione scrollToPage
e quando ho Swipe, ma quando si utilizza la variabile scrollToElement
il currPageX
non aggiorna.
Pertanto, se si passa a un elemento e si naviga in avanti con scrollToPage('next', 0)
, questo torna indietro e passa alla pagina successiva dopo il sommario.
Ho provato utilizzando la funzione scroll.refresh()
dopo scrollToElement
, prima, mettendo la funzione all'interno di un timeout, ecc e non riesco a capire perché la currPageX
non è l'aggiornamento.
Ecco un frammento di codice jQuery che sto usando le due diverse funzioni:
// TO NAVIGATE FORWARD AND BACKWARDS
$('span.control').on('click', function() {
var slideDir = $(this).attr('data-dir');
if (slideDir == 'prev') {
var tehPg = tehScroll.currPageX-1;
} else if (slideDir == 'next') {
var tehPg = tehScroll.currPageX+1;
}
tehScroll.scrollToPage(tehPg, 0);
return false;
});
// TO JUMP FROM CONTENTS
$('li[data-page="toc"] span').on('click', function() {
var toPage = $(this).attr('data-page');
tehScroll.scrollToElement('li[data-page="'+toPage+'"]', 800);
// ADDED THE FOLLOWING LINE TO MANUALLY SET currPageX after scrolling!
tehScroll.currPageX = $('#slides li[data-page="'+toPage+'"]').index();
return false;
});
Sto usando la versione 5 di iScroll e avuto lo stesso problema. Il modo in cui l'ho risolto è stato scrivendo ** 'tehScroll.currentPage.pageY' ** invece di **' tehScroll.currPageX' ** Inoltre, qual è lo scopo di questo ** 'return false' ** a il fondo? –
'return false' fermerà l'azione predefinita dell'elemento su cui si fa clic, quindi per un tag' a' che naviga verso 'href', tuttavia, in questo caso, poiché il gestore di clic è su un' intervallo, fa esattamente niente;) – andyface