这适用于触控设备。我有一个滚动列表,当我触摸列表元素时,它会突出显示,当我们删除手指没有垂直移动时,它将转到其详细信息页面。但是当我们滑动(向上或向下可能超过9像素像素)时,此突出显示应该消失。这意味着它是一次轻扫尝试,而不是点击尝试。
我正在使用.mousemove()函数来实现这一点。但.mousemove()正在为浏览器创建过多的CPU使用率。我需要减少CPU使用率。那么,一旦鼠标位置垂直移动超过9像素,有没有办法杀死.mousemove()事件?如果我们再次尝试滑动,则此.mousemove()事件应该再次触发。
以下是我的代码。在这里" mousedownPosY"是我们触摸屏幕时鼠标的y位置。 " newMouseupPosY"是我们刷卡时获得的价值。如果它们的差异超过9px,则将进行滑动尝试并删除列表项上的突出显示。
$scope.mousemove=function(index,e){
var newMouseupPosY = e.pageY;
var mouseDiff = Math.abs(mousedownPosY - newMouseupPosY);
if ((Math.abs(newMouseupPosY - mousedownPosY)) > 9) {
//do something
}
};
如果任何人有比.mousemove()更好的方法,请分享。
提前致谢!!
答案 0 :(得分:0)
对于触摸设备,您可以使用触摸开始,触摸移动,触摸等Javascript触摸事件。
尝试以下代码可能会对您有所帮助。
var startY = 0,
curY = 0;
window.addEventListener('touchstart', onTouchStart);window.addEventListener('touchmove', onTouchMove);
function onTouchStart(event) {
startY = 0;
curY = 0;
startY = event.touches[0].pageY;}
function onTouchMove(event) {
curY = event.touches[0].pageY - startY;
if (Math.abs(curY) > 9) {
// do something
}}