2011-05-27 14 views
5

estoy usando este maravilloso plugin para capturar limpie eventos en los dispositivos móviles: http://www.netcu.de/jquery-touchwipe-iphone-ipad-librarypor defecto para limpiar algunas toallitas utilizando jQuery touchwipe

estoy usando el código de la fuente de esa página para obtener mi galería de imágenes de la bicicleta como debería ser. Sin embargo, mi galería de imágenes es el ancho completo de la pantalla. Desafortunadamente, touchwipe parece estar impidiendo que las toallitas arriba y abajo predeterminadas se desplacen hacia arriba y hacia abajo de la página. ¿Hay alguna manera de hacer que use el comportamiento predeterminado, excepto cuando se especifica otro comportamiento?

$(document).ready(function() { 
    $('#imagegallery').cycle({ 
     timeout: 0, 
     fx: 'scrollHorz', 
     next: '#next', 
     prev: '#prev' 
    }); 

    $("#imagegallery").touchwipe({ 
     wipeLeft: function() { 
      $("#imagegallery").cycle("next"); 
     }, 
     wipeRight: function() { 
      $("#imagegallery").cycle("prev"); 
     } 
    }); 
}); 

También estoy abierto a otras alternativas para lograr este mismo efecto (otros complementos, otros métodos). ¡Gracias!

+0

Al mirar el código de TouchWipe, veo que hay una opción para '{preventDefaultEvents: true}'. Sin embargo, solo quiero evitar el valor predeterminado usando wipeLeft y wipeRight, y no para wipeUp y wipeDown. Tal vez alguien más capaz podría sugerir cómo modificar el complemento para tener múltiples opciones de '{preventDefaultUp: false, preventDefaultLeft: true, etc.}' – thugsb

+0

Esto puede ayudar un poco: cambie las opciones del complemento a 'preventionDefaultEvents: [true, true, true, true] '(arriba, derecha, b, l) y eliminar la línea para evitar el valor predeterminado. Luego, agregue en la línea 'if (config.preventDefaultEvents [3]) {e.preventDefault();}' justo encima de 'config.wipeLeft();' y de manera similar para los diferentes wipeDirs. Esto en realidad no funciona, pero puede ayudar a una solución. – thugsb

+0

Gracias por esto. Solo mirando su código, solo lo usó con el plugin de ciclo, ¿verdad? ¿Me pregunto si alguien ha podido usar el complemento para deslizar todo el contenido de una página? – Desmond

Respuesta

12

Con este pequeño parche a la biblioteca jquery.touchwipe:

if(Math.abs(dx) >= config.min_move_x) { 
    cancelTouch(); 
    if(dx > 0) { 
-  config.wipeLeft(); 
+  config.wipeLeft(e); 
    } 
    else { 
-  config.wipeRight(); 
+  config.wipeRight(e); 
    } 
    } 
    else if(Math.abs(dy) >= config.min_move_y) { 
    cancelTouch(); 
    if(dy > 0) { 
-  config.wipeDown(); 
+  config.wipeDown(e); 
    } 
    else { 
-  config.wipeUp(); 
+  config.wipeUp(e); 
    } 
    } 

a continuación, puede cambiar el código para llamar selectivamente e.preventDefault():

$(document).ready(function() { 
    $('#imagegallery').cycle({ 
     timeout: 0, 
     fx: 'scrollHorz', 
     next: '#next', 
     prev: '#prev' 
    }); 

    $("#imagegallery").touchwipe({ 
     wipeLeft: function(e) { 
      e.preventDefault(); 
      $("#imagegallery").cycle("next"); 
     }, 
     wipeRight: function(e) { 
      e.preventDefault(); 
      $("#imagegallery").cycle("prev"); 
     }, 
     preventDefaultEvents: false 
    }); 
}); 

(He presentado la parche al autor del complemento.)

Cuestiones relacionadas