当两个层重叠在一起时,使用Zepto的tap事件时,点击上面的一层时会触发下面一层的事件,特别是底层如果是input框时,必“穿透”,“google”说原因是“tap事件实际上是在冒泡到body上时才触发”,也就是Zepto的tap事件是绑定在document上的,解决方案:
1.使用github上有一个叫做fastclick的库;
2.监听touchend事件,并在事件中使用preventDefault()阻止冒泡;
3.使用css3的pointer-events=true,pointer-events=none切换来实现;
4.延迟一定的时间来处理事件。本人测试是超过320毫秒就不会出现穿透,与jquery的动画(fadeIn(),fadeOut())等配合,个人感觉良好;
1 |
$(id).fadeIn(330); |
5.如果还不奏效,终极解决方案是用click提代tap;
- 本文固定链接: http://7iang.com/?p=270
- 转载请注明: 7iang 于 7iang 麦冰棍 发表