hammer.js und preventDefault();
js für die Unterstützung von touch-gesten. Ich bin Absacken meinem Kopf zu verhindern, dass Standard-Aktionen. wenn ich event.preventDefault
oder event.gesture.preventDefault()
oder auch parameter {prevent_defaults: true }
auf hammer es ist nur Auslöser Standard-Aktion, die auf den Anker. Wie kann ich das verhindern und/oder was mache ich falsch?!
Code-snippet;
function initializeNavigation() {
$("nav").hammer({prevent_defaults: true }).on("tap", "a", function(event) {
event.preventDefault();
event.gesture.preventDefault();
var target = $(this.hash);
scrollToTarget(target, 1200);
//if there is an open detailItem then close it.
if (detailItemOpen) {
$("div." + detailItemOpen).slideUp();
}
})
if (Modernizr.mq('only screen and (max-width: 767px)')) {
initializeMobileMenuAndSetButton();
}
}
- Obwohl nicht ganz ein Duplikat, diese Antwort kann helfen: stackoverflow.com/questions/10714868/...
- Ich verstehe nicht deine Antwort, denn es passiert auch im Firefox. Es hat etwas zu tun mit Hammer.js und die Ereignisse. Wenn ich nur die Klick-events funktionierte alles korrekt auf Geräten mit einer Maus.
- Stimmt, lange Diskussion darüber hier. Es ist über stopPropagation(), gilt aber preventDefault() zu: github.com/EightMedia/hammer.js/issues/237
- Aha okay. Ich lese das Thema. Also das Tippen nicht yhe gleiche wie ein Klick-Ereignis. Das ist, warum immer noch Standard-Verhalten, klicken Sie auf den Anker, noch ausgelöst wird. Könnte ich die Lösung entschieden. Ich Binde eine zweite on-Methode .on("click", funtion(event) { event.preventDefault()}
- Deine Letzte Bemerkung sollte die akzeptierte Antwort myradon 😉
Du musst angemeldet sein, um einen Kommentar abzugeben.
Angesichts Hammer 2.0+
event.gesture
ist nicht mehr und Ereignis, sondern ein einfaches Objekt.event.gesture.srcEvent
wird nicht das richtige event stopPropagation auf, so wird es nicht funktionieren.Wenn Sie die
tap
Veranstaltung und wollen verhindern, klicken Sie auf/taps auf das Dokument, das Sie tun können, so etwas wie dieses.Wir brauchen eine Globale tap-handler ersetzen die ursprünglichen Methoden
stopPropagation
undpreventDefault
JS:
Ich denke, man kann auch versuchen
event.stopPropagation()
undevent.gesture.stopPropagation()
.Aber es scheint, dass Hammer gibt, dass die Methode :
event.gesture.stopDetect()
für einen ähnlichen Fall.Quelle: https://github.com/hammerjs/hammer.js/wiki/Event-delegation-and-how-to-stopPropagation---preventDefaults