2011-11-15 13 views
6

ACTUALIZACIÓN: Pude hacer que mi scroller funcionara como se desea, pero siento que he pirateado el problema real y me encantaría que alguien tenga una respuesta más sólida. He actualizado y anotado en los fragmentos debajo del nuevo jQuery que estoy usando.iscroll scrollToElement no actualiza la variable currPage

estoy usando iScroll-4 (http://cubiq.org/iscroll-4) para una aplicación web iPad/Android, todo funciona a la perfección con los golpes y el desplazamiento, pero tengo una tabla de contenido al principio de la aplicación que permite a los usuarios saltar a áreas específicas de la rueda de desplazamiento -

Estoy usando la función iScroll scrollToElement(element, duration) para saltar a las diferentes áreas. También usa scrollToPage(page, duration) para permitir al usuario navegar manualmente hacia adelante y hacia atrás una página a la vez.

Mientras está viendo la consola registra los currPageX actualización de las variables cuando navego con la función scrollToPage y cuando deslizar el dedo, pero cuando se utiliza la variable scrollToElement la currPageX no se actualiza.

Por lo tanto, si salto a un elemento y luego avanzo con scrollToPage('next', 0), irá hacia atrás y me llevará a la página siguiente después de la tabla de contenido.

He intentado usar la función scroll.refresh() después scrollToElement, antes, poniendo la función dentro de un tiempo de espera, etc., y no puedo entender por qué la currPageX no se actualiza.

He aquí un fragmento del código jQuery que estoy usando las dos funciones diferentes:

// 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

estoy usando la versión 5 de iScroll y tenía el mismo problema. La forma en que lo resolví fue escribiendo ** 'tehScroll.currentPage.pageY' ** en lugar de **' tehScroll.currPageX' ** Además, ¿cuál es el propósito de eso ** 'return false' ** en ¿El fondo? –

+0

'return false' detendrá la acción predeterminada del elemento cliqueado, por lo que para una etiqueta' a' que estaría navegando al 'href', sin embargo, en este caso, debido a que el manejador de clics está en' span', no hace precisamente nada;) – andyface

Respuesta

0

¿Consideró el uso widget de jquery-mobile-iscrollview plug-in? - hay una función scrollToPage (pageX, pageY, tiempo), funciona bien para mí ...

mejor

M

Cuestiones relacionadas