日期:2014-05-16  浏览次数:20407 次

上一个click未执行完不允许执行下一次click
这个是一个滚动新闻的  (手动)上下翻动的函数

function roll(x) {
            //执行前禁用点击事件?
            var divHeight = $("#rollNews").height();
            var top = parseInt($("#rollNews").css("top").replace("px", ""));
            top += x;
            if (divHeight == -top) {
                top = 0;
            }
            $("#rollNews").animate({ top: top + "px" }, 1000, null, function () {
                //动画执行完了启用点击事件?
            });
        }


animate动画1秒的执行时间,如果1秒内不停的点击翻动,会造一些我不想要的结果。
我的思路是在两处注释处解决问题,以前没做过,求解

------解决方案--------------------
按照你思路的求解

var roll = ( 
function(){
var isrun  = false;
return function roll(x) {
            //执行前禁用点击事件?
            if(isrun){return;}
            isrun = true;

            var divHeight = $("#rollNews").height();
            var top = parseInt($("#rollNews").css("top").replace("px", ""));
            top += x;
            if (divHeight == -top) {
                top = 0;
            }
            $("#rollNews").stop(true).animate({ top: top + "px" }, 1000, null, function () {
                //动画执行完了启用点击事件?
                isrun = false;
            });
        }
})();