jQuery-Kalender-Ereignisklicks werden nicht mit ftLab-Schnellklick ausgelöst

Lesezeit: 3 Minuten

Benutzer-Avatar
Tharaka

Ich arbeite mit dem AngularJS-Kalender (der im Wesentlichen jQuery Full Calendar von Adam Shaw ist, der für Winkel verpackt ist). Hier funktionierten die Klicks auf Kalenderereignisse sowohl auf dem iPad als auch auf dem Desktop einwandfrei, bis ich fastclick.js von ft labs (https://github.com/ftlabs/fastclick). Jetzt funktionieren Klicks auf Kalenderereignisse nur auf dem Desktop, aber überhaupt nicht auf dem iPad!

Andere ng-Klicks funktionieren jedoch problemlos mit Fastclick sowohl auf dem Desktop als auch auf dem iPad.

Ich verstehe, wie fastclick.js funktioniert, indem ich einfach Touch-End-Ereignis-Listener hinzufüge und Klickereignisse darin aufrufe, und kann nicht verstehen, warum dies bei Klicks auf Kalenderereignisse fehlschlagen würde.

Hinweis: Ich habe versucht, ngTouch anstelle von Fastclick zu verwenden, aber der ng-Klick wird nicht schnell. Laut Google kann ng-click von ngTouch nicht mit jQuery verwendet werden

  • Haben Sie versucht, die hinzuzufügen needsclick Klasse als in der Fastclick-Dokumentation angegeben?

    – JoseM

    23. Mai 2014 um 14:41 Uhr

  • Können Sie mit Codebeispielen aktualisieren? oder Geige?

    – dmcqu314

    5. April 2015 um 17:50 Uhr

  • Wo hast du das JS eingefügt? Versuchen Sie, vor allem anderen in den Header einzufügen.

    – Winterzähler

    20. April 2015 um 11:05 Uhr

  • Ich empfehle vclick von jquery mobile zu verwenden

    – Marius

    30. April 2015 um 10:14 Uhr

  • Obwohl ich nicht speziell versucht habe, was Sie tun, hatte ich Spaß an Ereignissen. Wenn Sie Ereignisse binden, sind sie kumulativ, es sei denn, Sie heben die Bindung früherer Bindungen für ein bestimmtes Ereignis auf. Dies kann zu unerwarteten Ergebnissen führen, wenn Sie nicht aufpassen. Eine andere Sache, wenn Sie sich an ein DOM-Element der obersten Ebene binden, sollten Ihre Klicks (und ich denke, Berührungen) sprudeln. Ich verwende dies für komplexe Grids, da es Bindungen und Speicherverbrauch reduziert und die Gesamtleistung verbessert. Viel Glück!

    – JE CarterII

    1. Juni 2015 um 18:43 Uhr

Wenn alles andere fehlschlägt, können Sie mit visual event überprüfen, welche Ereignisse mit Ihren Elementen verknüpft sind: http://www.sprymedia.co.uk/article/visual+event
Dadurch wird jeder Webseite eine Überlagerung hinzugefügt, und Sie können den JS-Code, der mit einem Element verknüpft ist, visuell überprüfen (es zeigt Ihnen den Codeabschnitt in einem Popup).

Auf diese Weise können Sie leicht sehen, ob alles richtig eingerichtet ist.

PS: Ich habe keinen Link zu diesem Tool oder seinen Herstellern.

Ich hatte ein ähnliches Problem. fastclickjs blockiert jede jQuery .click() . Aber wenn Sie ein Ereignis ohne jQuery versenden, funktioniert alles einwandfrei.

Nun, das ist eine alte Frage, aber vielleicht hilft es jemandem.

Ich hatte ein ähnliches Problem, und sogar fastclick.js hat nicht geholfen und war auf dem iPad nicht schnell genug.

Das Problem ist, dass bei einem normalen Browser-Klickereignis (auf einem iPad) eine Verzögerung von 300 ms beim Touchstart und erneut 300 ms beim Touchend auftritt.

fastclick.js hatte auch einige Konflikte wie Ihren mit dem Kalender.

Also habe ich einfach eine eigene Direktive geschrieben und sie aufgerufen ng-mobile-click.

Richtlinie ngMobileClick:

App.directive("ngMobileClick", [function () {
    return function (scope, elem, attrs) {
        elem.bind("touchstart click", function (e) {
            e.preventDefault();
            e.stopPropagation();

            scope.$apply( attrs["ngMobileClick"] );
        });
    }
}]);

Verwendung in Vorlagen:

<input type="button" value="somevalue" ng-mobile-click="someFunction(someParam)"/>

Vorteil:
Wird niemals mit standardmäßigen Klickereignissen in Konflikt geraten.

Nachteil
Sie müssen Ihren Code dort umgestalten, wo Sie ihn benötigen

1180970cookie-checkjQuery-Kalender-Ereignisklicks werden nicht mit ftLab-Schnellklick ausgelöst

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy