码迷,mamicode.com
首页 > 其他好文 > 详细

zepto之tap点透处理

时间:2015-08-26 15:58:29      阅读:215      评论:0      收藏:0      [点我收藏+]

标签:

现象原因

zepto的tap通过兼听绑定在document上的touch事件来完成tap事件的模拟的,及tap事件是冒泡到document上触发的

再点击完成时的tap事件(touchstart\touchend)需要冒泡到document上才会触发,而在冒泡到document之前,用 户手的接触屏幕(touchstart)和离开屏幕(touchend)是会触发click事件的,因为click事件有延迟触发(这就是为什么移动端不 用click而用tap的原因)(大概是300ms,为了实现safari的双击事件的设计),所以在执行完tap事件之后,弹出来的选择组件马 上就隐藏了,此时click事件还在延迟的300ms之中,当300ms到来的时候,click到的其实不是完成而是隐藏之后的下方的元素,如果正下方的 元素绑定的有click事件此时便会触发,如果没有绑定click事件的话就当没click,但是正下方的是input输入框(或者select选择框或 者单选复选框),点击默认聚焦而弹出输入键盘,也就出现了上面的点透现象。

解决办法:

用touchend代替tap事件并阻止掉touchend的默认行为preventDefault()

设置点击事件为_tap

_tap = touchend in document ? "touchend":"click"

这样在执行的过程中就可以直接调用div.on(_tap, function(){})

zepto之tap点透处理

标签:

原文地址:http://my.oschina.net/u/2328177/blog/497310

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!