为了账号安全,请及时绑定邮箱和手机立即绑定

jquery 如何添加class 几秒移除再移除这个class?

jquery 如何添加class 几秒移除再移除这个class?

Qyouu 2019-05-12 14:42:42
小菜鸟的问题我想手机端设置点击屏幕唤醒菜单按钮,几秒后这个菜单自动隐藏,我目前想到的是使用setTimeout(),在body绑定click点击事件,然后在这个click函数内使用.addClass()给元素天机指定class,几秒后消失就再添加setTimeout()来移除,这么一来会有个问题,就是这个setTimeout()执行会积累,也就是click触发。几次,setTimeout()就会执行几次,也就是多次移除class。如何在setTimeout()设定的时间内多次click也只执行一次呢?$('body').on('click',function(){$('body').addClass('touchmove');setTimeout(function(){$('body').removeClass('touchmove');},5000);});
查看完整描述

2 回答

?
慕标5832272

TA贡献1966条经验 获得超4个赞

为了达到让click处理函数没有结束前再次触发无效,可以使用jQuery的one方法,即只让click一次有效。在处理函数结束时,再给body绑定一个一次有效的处理函数。
functionclickHandler(){
$('body').addClass('touchmove');
setTimeout(function(){
$('body').removeClass('touchmove');
$('body').one('click',clickHandler);
},5000);
}
$('body').one('click',clickHandler);
                            
查看完整回答
反对 回复 2019-05-12
?
Helenr

TA贡献1780条经验 获得超4个赞

vartimer;$('body').on('click',function(){
clearTimeout(timer);
timer=setTimeout(function(){
$('body').addClass('touchmove');
setTimeout(function(){
$('body').removeClass('touchmove');
},5000);
},200);
});
                            
查看完整回答
反对 回复 2019-05-12
  • 2 回答
  • 0 关注
  • 849 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信