jQuery leben () Attribute iPhone Touch-Ereignis zu entfernen?
Frage
Ich bin Bindung Live-Events auf die Links in meinem PhoneGap App. Das Ereignis wird erfolgreich (von alert()
ing bestätigt), aber es scheint, jede Berührung Daten nicht an das Ereignisobjekt angebracht ist, wie es sein sollte. Dies geschieht auf allen Touch-Ereignisse -. touchstart
, touchmove
und touchend
$('a').live('touchend', function(event) {
event.preventDefault();
alert(event.touches.length); // event.touches should be populated!
});
Irgendwelche Ideen? Am I SOL mit jQuery.live ()?
Lösung
Die Touch-Ereignisse werden derzeit nicht unterstützt von Events / Live .
Aus der Dokumentation:
Mögliche Ereigniswerte: Klicken Sie, dblclick, mousedown-, mouseup, mousemove-, Mouseover, mouseout, keydown, keypress, keyup
Zur Zeit nicht unterstützt: Unschärfe, Fokus, MouseEnter-, mouseleave, ändern einreichen
Sie möchten klicken versuchen, zu prüfen, zu verwenden, wenn das Ihre Bedürfnisse anzupassen, oder Sie können wechseln Sie mit livequery , die es unterstützen wird wahrscheinlich. (Livequery ist, was Live-basierte ursprünglich auf, ich bin nicht sicher, warum es nicht alle die gleichen Ereignisse unterstützen)
Andere Tipps
Eigentlich kann man die .live Methode verwenden. Sie haben nicht die event.touches Eigenschaft wegen, wie jQuery Ereignisse intern behandelt. Um zu „reparieren“ Ereignisse, jQuery Klone das Ereignis. so ist es nur Kopien über eine begrenzte Anzahl von Eigenschaften aus Leistungsgründen zu tun. Sie können jedoch immer noch das ursprüngliche Ereignis zugreifen Objekt über die event.originalEvent Eigenschaft.
So Ihr Beispielcode müsste wie folgt aussehen:
$('a').live('touchend', function(event) {
event.preventDefault();
console.log(event.originalEvent.touches.length);
});
Das sind die Eigenschaften, die über kopiert werden: http: / /github.com/jquery/jquery/blob/master/src/event.js#L411