【问题标题】:Is there a way to stop and start triggering mousemove function in jquery?有没有办法在 jquery 中停止和开始触发 mousemove 函数?
【发布时间】:2016-03-11 05:54:31
【问题描述】:

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

我正在使用 .mousemove() 函数来实现这一点。但是 .mousemove() 正在为浏览器创建过多的 CPU 使用率。我需要减少 CPU 使用率。那么,一旦鼠标位置垂直移动超过 9 px,有没有办法杀死 .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 jquery angularjs


【解决方案1】:

对于触摸设备,您可以使用 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
}}

【讨论】:

    猜你喜欢
    • 2011-12-08
    • 1970-01-01
    • 2020-05-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-05
    • 1970-01-01
    • 2018-02-22
    • 1970-01-01
    相关资源
    最近更新 更多