Gesto de deslizamiento de jQuery Mobile en la página con elemento de gesto arrastrable

Estoy usando jQuery Mobile para cambiar entre varias páginas externas html y en una página tengo un elemento que se puede arrastrar como este:

var moveMe = function(e) {
    e.preventDefault();
    var orig = e.originalEvent;
    var x = event.touches[0].pageX; 
    if(x>=275 && x<709){
        $(this).css({
            left: orig.changedTouches[0].pageX
        });
    }
};
$("#dragmetimer").bind("touchstart touchmove", moveMe);

Estoy cambiando de página con jquery mobile así:

$("#content1").live('swipeleft', function (event, ui) {
  $.mobile.changePage("index2.html", "slide");
  event.stopImmediatePropagation();
});

$("#content2").live('swipeleft', function (event, ui) {
    $.mobile.changePage("index3.html", "slide");
    event.stopImmediatePropagation();
});
$("#content2").live('swiperight', function (event, ui) {
    $.mobile.changePage("index.html", { transition: "reverse slide"});
    event.stopImmediatePropagation();
});

El problema es que cuando llego a la página que tiene la función de arrastrar, cuando la arrastro, también hace el deslizamiento.

¿Hay alguna forma de controlar jQuery Mobile y hacer que no lea la función de deslizar mientras hay un gesto de arrastrar?

preguntado el 31 de julio de 12 a las 15:07

1 Respuestas

Creo que su problema tiene que ver con el burbujeo de eventos. El evento touchmove se está activando correctamente en su elemento que se puede arrastrar, pero luego está burbujeando en todo el DOM, lo que hace que se activen los eventos de deslizamiento de página.

Intente agregar esto a su controlador de eventos, evitará que el evento burbujee:

e.stopPropagation();

Entonces tu función sería así:

var moveMe = function(e) {
    e.preventDefault();
    e.stopPropagation();
    var orig = e.originalEvent;
    var x = event.touches[0].pageX; 
    if(x>=275 && x<709){
        $(this).css({
            left: orig.changedTouches[0].pageX
        });
    }
};

Respondido 31 Jul 12, 15:07

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.