我们都知道input,button都可以有disbled属性,如果一个图标上有onclick事件,(PS:本来以为自己的想法还挺特别,随便查了点资料就白扯了,革命还需努力啊......),我们可以写成
<input type="image" src="???" id="???">
当onclick事件触发后,我们给他加一个disabled属性,现在我们通常都是通过ajax异步发送请求,当请求成功之后我们再移除disabled这个属性,这样可以减轻服务器压力,也会避免前端一些未知的bug
参考网上其他大神的总结:http://www.cnblogs.com/luckyXcc/p/5804650.html
1> 定义标志位:
点击触发请求后,标志位为false量;请求(或者包括请求后具体的业务流程处理)后,标志位为true量。通过标志位来判断用户点击是否具备应有的响应。
2> 卸载及重载绑定事件:
点击触发请求后,卸载点击事件;请求(或者包括请求后具体的业务流程处理)后,重新载入绑定事件。
3> 替换(移除)按钮DOM
点击触发请求后,将按钮DOM对象替换掉(或者将之移除),自然而然此时不在具备点击事件;请求(或者包括请求后具体的业务流程处理)后,给新的按钮DOM定义点击事件。
在项目的具体实现中,我对用户点击的频度加了限制,看了以上的总结知道我的方法原来有个名词叫节流函数,eg:
var lastClickTime = new Date().getTime();
function isFastClick(interval){
let time = new Date().getTime();
if(lastClickTime + interval >time){
return false;
}else{
lastClickTime = time;
return true;
}
}