سؤال

أريد أن أتلاشى عنصرًا وجميع عناصر أطفاله بعد تأخير بضع ثوان. لكنني لم أجد طريقة لتحديد أن التأثير يجب أن يبدأ بعد تأخير الوقت المحدد.

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

المحلول

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 ثوان ، تلاشي عنصر مرة أخرى.

لا يستخدم أي اختراقات رسوم متحركة أو سلسلة من الاتصالات المفرطة ، فقط رمز قصير نظيف بسيط.

http://blindsignals.com/index.php/2009/07/jquery-delay/

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top