有没有办法在jquery中停止并开始触发mousemove函数?

时间:2016-03-11 05:54:31

标签: javascript jquery angularjs

这适用于触控设备。我有一个滚动列表,当我触摸列表元素时,它会突出显示,当我们删除手指没有垂直移动时,它将转到其详细信息页面。但是当我们滑动(向上或向下可能超过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()更好的方法,请分享。

提前致谢!!

1 个答案:

答案 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
}}