سؤال
أريد أن أتلاشى عنصرًا وجميع عناصر أطفاله بعد تأخير بضع ثوان. لكنني لم أجد طريقة لتحديد أن التأثير يجب أن يبدأ بعد تأخير الوقت المحدد.
المحلول
setTimeout(function() { $('#foo').fadeOut(); }, 5000);
5000 هو خمس ثوان في مللي ثانية.
نصائح أخرى
أستخدم هذا البرنامج المساعد الموقف الذي كتبته للتو
$.fn.pause = function(duration) {
$(this).animate({ dummy: 1 }, duration);
return this;
};
نسميها هكذا:
$("#mainImage").pause(5000).fadeOut();
ملاحظة: لا تحتاج إلى رد اتصال.
تحرير: يجب عليك الآن استخدام jQuery 1.4. بنيت في تأخير () طريقة. لم أتحقق ولكني أفترض أنها أكثر ذكاءً من البرنامج المساعد الخاص بي.
في السابق ستفعل شيئًا كهذا
$('#foo').animate({opacity: 1},1000).fadeOut('slow');
أول تحريك لا يفعل أي شيء لأن لديك بالفعل عتامة 1 على العنصر ، ولكنه سيتوقف عن مقدار الوقت.
في JQuery 1.4 ، قاموا ببناء هذا في الإطار حتى لا تضطر إلى استخدام الاختراق كما هو أعلاه.
$('#foo').delay(1000).fadeOut('slow');
الوظيفة هي نفس الأصل jQuery.delay()
توصيل في http://www.evanbot.com/article/jquery-delay-plugin/4
أفضل طريقة هي استخدام طريقة تأخير jQuery:
$ ('#my_id'). تأخير (2000) .fadeout (2000) ؛
يمكنك تجنب استخدام SetTimeOut باستخدام طريقة Fadeto () ، وتحديد تأخير 5 ثانية على ذلك.
$("#hideAfterFiveSeconds").click(function(){
$(this).fadeTo(5000,1,function(){
$(this).fadeOut("slow");
});
});
لقد كتبت مكونًا إضافيًا للسماح لك بإضافة تأخير إلى السلسلة.
على سبيل المثال $ ('#div'). fadeout (). التأخير (5000) .fadein () ؛ // تلاشي عنصر الخروج ، انتظر 5 ثوان ، تلاشي عنصر مرة أخرى.
لا يستخدم أي اختراقات رسوم متحركة أو سلسلة من الاتصالات المفرطة ، فقط رمز قصير نظيف بسيط.