今天加mui的确认框,发现即便在里面放很少的代码,也会多次触发事件,确认框依旧会弹出两次,然后就是疯狂的查,最后发现是触发点击事件的方式不对,上码
//这个就是我常用的点击事件触发,在里面加上mui.confirm
$("body").on("tap", "#conserve", function() {
console.log(JSON.stringify(e));
});
//这个是正确的
$("body").on("click", "#conserve", function() {
console.log(JSON.stringify(e));
});
看出不同了没,就是触发方式,应该用click。
click和tap有什么不同呢
click与tap都会出发点击事件,但是在手机web端,click会有200-300ms延迟,所以一般用tap(轻击)代替click作为点击事件。
但是,注意了,tap有可能出现点透事件(mui弹框两次出现可能与此有关),点透事件的实质就是多层,而绑定了tap事件的那层,在事件触发之后这个元素就会display: none,而在z轴上有多个容器,点透,很形象吧。有兴趣的可以去研究一下
解决方案: (1)使用fastclick。 (2)添加一个延迟。