仅当jquery已完成上一次执行时才执行click事件

仅当jquery已完成上一次执行时才执行click事件,jquery,Jquery,我希望单击事件仅在它已完成上一次执行时执行。我的代码是 $(".next").click(function(){ $(this).parent().find('.overlay').css({'display':'block'}); addContent(options, speed, 1); }); 最简单的方法是在启动任务时单击事件处理程序,并在任务完成后再次绑定它。您需要有某种回调或延迟对象来知道addContent函数何时完成,然后执行以下操作: $(".next").on('c

我希望单击事件仅在它已完成上一次执行时执行。我的代码是

$(".next").click(function(){

$(this).parent().find('.overlay').css({'display':'block'});
addContent(options, speed, 1);


});

最简单的方法是在启动任务时单击事件处理程序,并在任务完成后再次绑定它。

您需要有某种回调或延迟对象来知道addContent函数何时完成,然后执行以下操作:

$(".next").on('click', doStuff);

function doStuff() {
    $(".next").off('click', doStuff);
    $(this).parent().find('.overlay').css('display', 'block');
    addContent(options, speed, 1, function() {  //<-- callback
        $(".next").on('click', doStuff);
    });
}

function addContent(options, speed, num, callback) {
    options.animate({left: num}, speed, function() {
        callback();  //<-- call callback when function is completed
    });
}
$(.next”)。在('click',doStuff)上;
函数doStuff(){
$(“.next”).off('click',doStuff);
$(this).parent().find('.overlay').css('display','block');

addContent(options,speed,1,function(){//上次执行的是什么?addContent函数是否执行一些异步任务?最好使用
on/off
而不是
bind/unbind
@Fabriziocarderan如果你有jQuery 1/7+,是的,建议优先选择
unbind
。我的addContent()函数包含太多代码,addContent()未完全执行,click事件已绑定我该怎么做。请在addContent开始时调用unbind(或off),然后再次调用click函数以在结束时重新绑定它。