Подтвердить что ты не робот

JQuery Календарь событий не запускается с быстрым щелчком ftLab

Я работаю с календарем AngularJS (который по существу является полным календарным календарем jQuery от Адама Шоу, завернутым в angular). Здесь клики событий календаря работали как в режиме ipad, так и на рабочем столе, пока я не привел fastclick.js в ft labs (https://github.com/ftlabs/fastclick). Теперь клики по событиям в календаре работают только на рабочем столе, но не работают вообще на ipad!

Однако другие ng-clicks отлично работают с fastclick как на настольном компьютере, так и на iPad.

Я понимаю, как работает fastclick.js, просто добавляя прослушиватели событий touch-end и вызывающие события кликов внутри них, и не могут понять, почему это может произойти с кликами по календарным событиям.

Примечание. Я попытался использовать ngTouch вместо fastclick, но их, ng-click не быстро. Согласно google, ngTouch ng-click не может использоваться с jQuery

4b9b3361

Ответ 1

Если все остальное не удается, вы можете проверить, какие события связаны с вашими элементами с визуальным событием: http://www.sprymedia.co.uk/article/visual+event Это добавляет наложение на любую веб-страницу и позволяет визуально проверять JS-код, связанный с элементом (он показывает вам фрагмент кода во всплывающем окне).

Таким образом, вы можете легко увидеть, правильно ли настроено все.

PS: У меня нет ссылки на этот инструмент или его создателей.

Ответ 2

У меня была аналогичная проблема. fastclickjs блокирует каждый jQuery .click(). Но если вы отправляете событие без jQuery, все работает отлично.

Ответ 3

Ну, это старый вопрос, но, возможно, это помогает кому-то.

У меня была аналогичная проблема, и даже fastclick.js не помог и не был достаточно быстрым на iPad.

Проблема заключается в том, что на обычном событии клика браузера (на iPad) есть задержка 300 мс на сенсорном экране и снова 300 мс на touchhend.

fastclick.js также имел некоторые конфликты, подобные вашим, с календарем.

Итак, я написал собственную директиву и назвал ее ng-mobile-click.

Директива ngMobileClick:

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

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

Использование в шаблонах:

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

Преимущество: Никогда не будет противоречить стандартным событиям кликов.

Неудобство Вы должны реорганизовать свой код там, где он вам нужен.