2012-02-16 19 views
9

Estoy intentando utilizar los eventos móviles de jQuery sin el resto de jQuery móvil.Extienda .on() de jQuery para trabajar con eventos táctiles móviles

https://github.com/jvduf/jquery-mobile-events/blob/master/jquery.mobile.events.js

Este recorte permite a todos ellos, y funciona bien, pero no con el controlador de eventos .on(). Por ejemplo:

$('a').on('tap',function(){ 
    console.log('Hi there!'); 
}); 

Sin embargo, funciona con .live(), pero que ahora está depreciado.

Así que mi pregunta; ¿Hay alguna manera de extender la funcionalidad .on() para incluir el evento tap y otros? la lista completa a continuación:

  • touchstart
  • touchmove
  • touchend
  • orientationChange
  • grifo
  • taphold
  • golpe
  • swipeleft
  • swiperight
  • scrollstart
  • scrollstop

Gracias :)

+0

El selector para 'on()' necesita ser un elemento principal ... lea la ayuda para on() es muy simple ... – ManseUK

+0

Extracción en frío, pero ¿qué tan actualizado está? Pensar que tengo 11 meses es bastante viejo en este momento, ¿alguien está manteniendo este archivo? – rball

Respuesta

9

Sin embargo, funciona con .live(), pero que ahora son objeto de amortización.

Supongo que quiere usar la delegación de eventos para conservar esos eventos en los elementos reemplazados. Eso significaría que esto:

$('a').on('tap',function() { 
    console.log('Hi there!'); 
}); 

tendría que cambiar a algo como:

$(document).on('tap', 'a', function() { 
    console.log('Hi there!'); 
}); 

con el fin de que se comporte igual que $("a").live("tap", ...

+1

¡Sabía que esto sería algo básico, quizás mirando la pantalla por mucho tiempo! Muchas gracias :) – will

+1

¿Por qué no se puede usar la función 'on' sobre un elemento, como en el primer fragmento? Me gustaría adjuntar manejadores solo en ciertos elementos, no en todo el documento. –

+0

@MisterSmith estuvo de acuerdo. – Swordfish0321

0

Tal vez debería ser mejor para extender el Código de evento JQuery para dispositivos móviles y computadoras de escritorio.

Una forma de hacerlo es utilizar el complemento JQuery vmouse (mouse virtual).

De VMOUSE plugin de comentarios:

// Este plugin es un experimento para abstraerse de tacto y de ratón
// eventos para que los desarrolladores no tienen que preocuparse de qué método de entrada
// el dispositivo en el que se carga su documento en soportes.
// //
La idea aquí es permitir al desarrollador para registrar oyentes de las
// eventos de ratón básicas, tales como mousedown, mousemove, mouseup, y haga clic,
// y el plugin se encargará de registrar los oyentes correctas
// detrás de las escenas para invocar al oyente en el menor tiempo posible
// para ese dispositivo, al tiempo que conserva el orden de disparar en caso
// el entorno tradicional del ratón, deberían varios controladores estar registrado
// en el mismo elemento para diferentes eventos.
//
// La versión actual expone los siguientes eventos virtuales a jQuery métodos de vinculación:
// "vmouseover vmousedown vmousemove vmouseup VHAGA CLIC vmouseout vmousecancel"

Para una mejor explicación, ver https://coderwall.com/p/bdxjzg

vmouse plugin: https://github.com/jquery/jquery-mobile/blob/master/js/jquery.mobile.vmouse.js

también ver este enlace sobre el estado actual de los acontecimientos (tacto): http://blogs.adobe.com/adobeandjquery/2011/03/07/the-current-state-of-touch-events/

Cuestiones relacionadas