2012-04-02 12 views
9

¿Cómo puedo deshabilitar el desplazamiento de contenido vertical en jquery móvil? Quiero desactivar todo desplazamiento para el contenido de la página. Gracias.jQuery móvil desactivar el contenido de la página desplazamiento vertical


puedo crear la página jquery.mobile y en el contenido agrego jquery.mobile.scrollview. Cuando uso scrollview, el contenido de mi página se desplaza hacia arriba y hacia abajo. ¿Cómo puedo desactivar el contenido de desplazamiento? Mi código de la página:

<div id="page2" data-role="page" align="center"> 
    <div data-role="content"> 
     <div id="mydatacontent" class="form"> 
      <div class="data-table-shadow" data-scroll="y" class="square single-block-view-v" style="height: 750px;"> 
       <table id="datatable" class="data-table"> 
        <tbody id="datatableContent"> 
         <!-- Table Data Here --> 
        </tbody> 
       </table> 
      </div> 
     </div> 
    </div> 
</div> 
+0

desea detener el desplazamiento en ambas direcciones o simplemente verticalmente ... event.preventDefault le ayudará a evitar el desplazamiento – iDroid

Respuesta

13

Puede unirse al evento touchmove y return false para prevenir el comportamiento predeterminado del evento touchmove:

$(document).delegate('.ui-content', 'touchmove', false);​ 

Esto debería desactivar el desplazamiento de todos los elementos data-role="content". Puede actualizar el selector .ui-content para que sea más específico si solo desea esta funcionalidad en una/algunas página (s).

Aquí es una demostración puede probar en su dispositivo móvil: http://jsfiddle.net/RKXLH/embedded/result/

+4

Solo quería que supiera que hay un * desagradable * carácter invisible al final de su fragmento. Lo copié/pegué para jugar y no funcionó. Se dio cuenta de esto solo después de 15 minutos de lucha. –

+0

@ JoãoCunha Interesante, no veo nada. Puede ser una diferencia entre el juego de caracteres de la página y el que estás usando en tu aplicación de edición. – Jasper

+0

Puede confirmar, me pasó a mí también en phpstorm en Windows. Eliminar la línea y volver a escribirla la solucionó de forma manual. –

14

he encontrado la respuesta anterior para estar funcionando bien. Sin embargo, esto evitará desplazarse en elementos secundarios de ".ui-content". uso el

"scrollstart"

evento lugar y elementos secundarios siguen siendo desplazable.

$(document).delegate(".ui-content", "scrollstart", false); 

Probado en iOS6 webview.

+1

El método anterior funciona. ¿Pero cómo revertirlo? es decir, si después de hacer que el desplazamiento se detenga, nuevamente si queremos comenzar a desplazarnos, ¿qué debería hacerse? - Gracias – Mak

+3

@Mak A continuación, debe quitar el controlador de eventos delegados con '.undelegate()': http://api.jquery.com/undelegate/. Si usa '.on()', puede usar '.off()' para eliminar el controlador de eventos. '.live()' tiene '.die()', pero deberías alejarte de '.live()' en este punto. – Jasper

+0

@Jasper hizo lo mismo ... ¡funcionó! – Mak

6

En mi experiencia que se tiene que hacer de esta manera:

var touchScroll = function(event) { 
    event.preventDefault(); 
}; 

$('element1').click(function() { 
    //this will disable the scroll 
    $(this).bind('touchmove', touchScroll); 

    $('element2').click(function() { 
     //this will enable scrolling 
     $(document).unbind('touchmove', touchScroll); 
    }); 
} 

element1 y elemento2 pueden ser cualquier cosa que desee, y por supuesto la función de clic es sólo por el ejemplo, se puede elegir cualquier función que desee.

+0

funciona ... muchas gracias ... Dios te bendiga ... –

Cuestiones relacionadas