有没有办法在jquery中停止和开始触发鼠标移动功能

Is there a way to stop and start triggering mousemove function in jquery?

本文关键字:开始 鼠标 功能 移动 jquery 有没有      更新时间:2023-09-26

这适用于触摸设备。我有一个滚动列表,当我触摸列表元素时,它会突出显示,当我们在没有垂直移动的情况下移除手指时,它将转到其详细信息页面。但是当我们向上或向下滑动(向上或向下可能超过 9px 像素)时,此突出显示应该消失。这意味着这是滑动尝试,而不是单击尝试。

我正在使用.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()更好的方法,请分享。

提前感谢!!

对于触摸设备,您可以使用Javascript触摸事件,如touchstart,touchmove,touchend。

尝试下面的代码可能对您有所帮助。

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