我通过编写自己的指令来解决这个问题,该指令同时监听touchstart
和mousedown
事件(或touchend
/mouseup
等)。为了进行重复数据删除,我在触摸事件发生时设置了一个标志,如果设置了该标志,我将忽略所有鼠标事件(因为触摸事件发生在鼠标事件之前,不重复数据删除会导致移动设备上的双重触发)。
appControllers.controller('AppCtrl', ['$scope',
function($scope) {
$scope._usingTouch = false;
/* app code */
}]).directive('lkClick', [function() {
return function(scope, element, attr) {
var fn = function() {
scope.$apply(function() {
scope.$eval(attr.lkClick);
});
}
element.on('touchstart', function(event) {
scope._usingTouch = true;
lk();
});
element.on('mousedown', function(event) {
if(!scope._usingTouch)
lk();
});
};
}]);
然后,您可以lk-click="javascript()"
在应用程序的 html 中添加指令。
使用 Fastclick 更容易、更快捷,但它更可定制,并且不需要您加载 Fastclick 代码。