最近做项目遇到了这样的情况:页面需要能放大缩小,而放大缩小的响应方法比较耗时,所以就会导致快速点击时IE浏览器出问题。于是设计了下面这段程序,把点击事件缓冲,记录最后的状态,当用户停止点击时,一起生效。
jQuery(function ($) {
var base = 1, clickCount = 0;
function zoom(rate) {
base = parseFloat(base * rate).toFixed(4);
++clickCount;
// 显示loading
$('#message').show();
setTimeout(doZoom, 1000);
}
function doZoom() {
if (--clickCount == 0) {
// 隐藏loading
$('#message').hide();
// 放大或缩小
$('#displayBox').html(base);
}
}
$('#zoomIn').bind('click', function() {zoom(1.15);});
$('#zoomOut').bind('click', function() {zoom(0.85);});
});