Jquery تعطيل الزر التالي حتى تنتهي الرسوم المتحركة

StackOverflow https://stackoverflow.com/questions/3618958

  •  26-09-2019
  •  | 
  •  

سؤال

هذا رائع وأنا على دراية بهذا.ومع ذلك، أريد أن تظل الأزرار التالية والسابقة مرئية، ولكن لا يمكن النقر عليها.في حالتي الخاصة، الأزرار عبارة عن صور تشكل جزءًا من التصميم.أريد فقط ألا يتمكن المستخدم من النقر قبل انتهاء الرسوم المتحركة.

هل كانت مفيدة؟

المحلول

$(function(){
    $("#previous").bind("click", Previous);
    $("#next").bind("click", Next);
});

function DoAnimation() {
    $("#previous,#next").unbind("click");
    $('#id').animate(
        complete: function() {
            $(this).after('<div>Animation complete.</div>');
            $("#previous").bind("click", Previous);
            $("#next").bind("click", Next);
        }
    });
}

function Previous() { }
function Next() { }

نصائح أخرى

تقنية واحدة أخرى:

$(".next,.prev").click(function(){
    if ($('#my_animated_elelement').is(':animated'))
    {
        return false;
    }
})

أعتقد أن لديك استدعاءات جافا سكريبت للصور عند النقر، استخدم متغيرًا MyApp.IgnoreNextPrevClicks لتحديد ما إذا كانت معالجات onclick قد تم تنفيذها أم لا.

MyApp={}
MyApp.IgnoreNextPrevClicks=false;
MyApp.PrevClick=function() {
    if(MyApp.IgnoreNextPrevClicks) return;
    //real work goes here
}

الآن قبل استدعاء jquery animator، قم بتعيين MyApp.IgnoreNextPrevClicks إلى true، وأعده مرة أخرى إلى false بعد انتهاء الرسوم المتحركة (استخدم رد اتصال الرسوم المتحركة jquery).

function btn() {
   $('#btn').one('click', function(){
     //call your animation function here.

     setTimeout(btn, animation duration);
  });
}
$('#mybtn').attr("disabled","disabled"); // to Disable Button

$('#mybtn').removeAttr("disabled"); // to Enable Disabled button
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top