我正在使用AngularJS日历(这实际上是由Adam Shaw为jangle包装的jQuery完整日历)。在这里,日历事件项目点击在ipad和桌面上都很好,直到我通过ft labs(https://github.com/ftlabs/fastclick)引入fastclick.js。现在,日历事件项目点击仅适用于桌面,但在ipad上根本不起作用!
然而,在桌面和iPad上快速点击其他ng-click工作正常。
我了解fastclick.js的工作方式,只需添加触摸结束事件侦听器并调用其中的点击事件,并且无法理解为什么这会因日历事件项目点击而失败。
注意:我尝试使用ngTouch而不是fastclick,但是他们的ng-click不会变快。根据谷歌的说法,ngTouch的ng-click不能与jQuery一起使用
答案 0 :(得分:1)
如果所有其他方法都失败了,您可以使用可视事件检查哪些事件与您的元素相关联:http://www.sprymedia.co.uk/article/visual+event 这为任何网页添加了一个覆盖层,让您可以直观地检查链接到元素的JS代码(它会在弹出窗口中显示这段代码)。
通过这种方式,您可以轻松查看是否所有内容都已正确设置。PS:我没有链接到这个工具或它的制造商。
答案 1 :(得分:1)
I had similar issue. fastclickjs
blocks every jQuery .click()
. But if you dispatch event without jQuery everything works fine.
答案 2 :(得分:1)
这是一个老问题,但也许对某人有帮助。
我遇到了类似的问题,甚至fastclick.js
没有帮助,而且在iPad上也不够快。
问题是,在正常的浏览器上,点击事件(在iPad上)在touchstart上有300毫秒的延迟,而在touchend上有300毫秒的延迟。
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)"/>
<强>优势:强> 永远不会与标准点击事件冲突。
<强>缺点强> 您必须在需要的地方重构代码