2011-11-15 9 views
6

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; 
    }); 
+1

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? –

+0

'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

risposta

0

Forse di considerare l'utilizzo di plug-in widget di jquery-mobile-iscrollview? - v'è una funzione scrollToPage (pageX, Pagey, tempo), funziona bene per me ...

migliore

M

Problemi correlati