看到一篇不错的文章也来说说touch事件与点击穿透
解决办法:
都使用tap或者都使用click(有300ms延迟,不推荐)是不会发生穿透的(原因参考上文),同为tap
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17Zepto(function($){
// 点击穿透
var $close = $('#closePopup');
var $popup = $('#popupLayer');
var $under = $('#underLayer');
var $mask = $('#bgMask');
$close.on('tap', function(e){
$popup.hide();
$mask.hide();
});
$under.on('tap', function(){
alert('underLayer clicked');
});
});否则可以将tap的隐藏等操作放在异步事件中异步方式
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19Zepto(function($){
// 点击穿透
var $close = $('#closePopup');
var $popup = $('#popupLayer');
var $under = $('#underLayer');
var $mask = $('#bgMask');
$close.on('tap', function(e){
window.setTimeout(function(){
$popup.hide();
$mask.hide();
},400);//大于300ms
});
$under.on('click', function(){
alert('underLayer clicked');
});
});FastClick等第三方库,个人感觉能不用尽量不用