touchmove上的jQuery绑定函数不起作用?

时间:2016-11-04 22:52:59

标签: jquery angularjs

我正在开发一个AngularJS图像查看器应用程序,如果您处于图像编辑模式,您还可以在图像上绘制("注释")。您可以通过单击作为编辑按钮的铅笔图标进入编辑模式。单击另一个按钮,即关闭编辑按钮,即可关闭编辑模式。

现在注释有一个错误,因为编辑模式下的绘图操作会干扰滚动事件,当您尝试绘制某些内容时,视图将开始滚动。所以为了解决这个问题,我在编辑模式下禁用了滚动,如下所示:

$('body').on("touchmove", function(e){e.preventDefault()});

当点击关闭编辑按钮时,我会启用向后滚动:

$('body').off("touchmove");

这很好用,除了某些情况之外,当我尝试绘制而没有调用off函数时,视图开始滚动!这些情况是随机发生的,是不可靠的可重复性,但当我和它坐在一起5分钟,涂鸦时,无端的卷轴时不时地发生。

我实际上通过在off方法的所有出现点上设置断点来测试这一点 - 断点没有被击中但是屏幕开始滚动。

开/关方法有问题吗?是否涉及时间限制?救命啊!

1 个答案:

答案 0 :(得分:0)

.on()将一个事件处理程序附加到元素。

.off()从元素中删除“以前附加的”事件处理程序。

所以,如果你像这样定义“处理程序”:

function preventTouch(e){
    e.preventDefault();
}

然后打电话给:

$('body').on("touchmove", preventTouch(e));

然后关闭:

$('body').off("touchmove", preventTouch(e));

它应该工作......
试试吧!


你应该也可以阻止这些事件:“touchstart”和“touchend”如下:

在:

$('body').on("touchmove touchstart touchend", preventTouch(e));

关:

$('body').off("touchmove touchstart touchend", preventTouch(e));