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
Ответы
Ответ 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)"/>
Преимущество:
Никогда не будет противоречить стандартным событиям кликов.
Неудобство
Вы должны реорганизовать свой код там, где он вам нужен.