关于mui的a标签在一些平板设备点击失效问题

问题

在tab页的a标签中,有些平板或者电脑设备可以支持触屏加鼠标的方式点击,但是会造成鼠标点击无法响应的问题。

原因

原因是事件触发的时间间隔问题,用鼠标点击时会有300ms的延迟,无法触发tap事件

解决方案

本来想通过jq的 trigger(‘tap’) 的方式触发点击,但是这似乎只能触发绑定在元素的tap监听,所以要使用原生的事件触发

第一种
$('a.mui-control-item').on('click', function() {
    var event = document.createEvent('Events');
    event.initEvent('tap', true);
    this.dispatchEvent(event);
});

不过这个方法已经在web标准中移除,不过还是有些浏览器支持的

第二种(推荐)
$('a.mui-control-item').on('click', function() {
    var event = new Event('tap',{'bubbles':true});
    this.dispatchEvent(event);
});
//原生
var item= document.querySelectorAll('a.mui-control-item');
for (var i = 0; i < item.length; i++) {
	item[i].addEventListener("click" , function(){
	     this.dispatchEvent(new Event('tap',{'bubbles':true}));
    } ,false);
}

这里要注意bubbles要设置为true和上面的方法中initEvent的第二个属性相对应的,为事件冒泡。
``

测试

首先浏览器开启手机调试模式,在点击切换tab页中,鼠标点击时延缓弹起鼠标的间隔,如果不加入上述代码,是无法切换页面的,加入之后即可切换页面,解决了这个问题。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值