如果用户在popup-div外部点击(触摸开始),我想隐藏弹出窗口.
但是,如果用户的意图是滚动/滑动(触摸移动),则我不想隐藏弹出窗口.
代码看起来如何检测和响应这两个动作(使用或不使用jQuery)?
解决方法:
这是如何执行此操作的基本示例:
http://jsfiddle.net/4CrES/2/
其背后的逻辑涉及检测初始触摸时间并将其保存到var
touchTime = new Date();
在touchend处理程序中,从当前时间中减去该时间以获得差值:
var diff = new Date() - touchTime;
使用if语句确定触摸持续时间是否短到足以将其视为轻击,或长到足以将其视为阻力.
if (diff < 100){
//It's a tap
}
else {
//Not a quick tap
}
您可以通过在处理程序中对初始touch y位置和最终touch y位置进行类似的操作来编写更强大的实现.另一个选择是比较滚动区域的scrollTop,以查看是否已滚动.