لا مسج ":الرسوم المتحركة" محدد تطابق العناصر التي تستخدم fadeIn() و fadeOut()?

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

سؤال

أحاول منع النقرات على قائمة البند في حين أن الرسوم المتحركة التي تحدث.حتى في الجزء العلوي من فوق معالج, أريد أن أفعل شيئا مثل هذا:

if(!$(this).is(:animated)) {
    // handle click code here
}

ملاحظة 'الانفجار' (!) في إذا كان البيان أعلاه.أنا لم تختبر لكن أفترض أن هذا العمل.ما أنا غير متأكد من ما إذا كان '.هو(:الرسوم المتحركة)' سيعود صحيح عند تشغيل ضد العنصر الذي يتم المتحركة عبر fadeIn() و fadeOut().أنا أعرف هذا مسج لديه .تحريك (وظيفة) ، وأفترض :الرسوم المتحركة يعمل بالتأكيد ضد العناصر المتحركة باستخدام هذه الوظيفة ، ولكن سوف تعمل مع أولئك الذين يستخدمون fadeIn() و fadeOut()?شكرا

تحديث: بعد بعض درامية نظم المعلومات الإدارية-الوظائف ، كل شيء يبدو جيدا, و بفضل reponders جميع المتابعات و التعديلات.في النهاية, لقد وجدت أن نعم :الرسوم المتحركة مباريات تلك العناصر المتحركة باستخدام fadeIn() و fadeOut() لأن مسج يستخدم مصدر .تحريك() لتحقيق هذه الآثار.بلدي الاختيار النهائي كما نشرت أصلا:

if(!$(this).is(:animated)) {
    // handle click code here
}

..بدلا من استخدام .لا() كما اقترح في بعض الحالات (على الرغم من أنني أعتقد أن هذه سوف تعمل حاليا نشر).شكرا مرة أخرى.

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

المحلول

نعم ، :animated ستكون العودة الحقيقية لأي نوع من الرسوم المتحركة مسج يخلق.فإنه سيتم أيضا أن تفعل ذلك في أي الإضافات التي تحرك شريطة استخدام مسج animate وظيفة.

ومع ذلك ، يمكنك كتابة التعليمات البرمجية الخاصة بك فقط قليل مختلفة لجعل استخدام مسج:

تحرير على not وظيفة ليس العكس is.فإنه بتصفية العقد, ولكن لا يزال بإرجاع كائن مسج التي يتم تقييمها إلى true.استخدام not وظيفة كما اقترح أصلا, سيكون لديك لإضافة .length الاختبار:

if( $(this).not(':animated').length ) {
    // Handle click code here
}

خلاف ذلك ، استخدم وظيفة المرجع الأصلية كتبت:

if( !$(this).is(':animated')) {
    // Handle click code here
}

نصائح أخرى

:animate سوف تطابق العناصر التي كان fadeOut ودعا.

إذا كنت تبحث في مصدر مسج, سترى أن fadeOut ببساطة المكالمات animate.
هو يعرف مثل هذا:

// Generate shortcuts for custom animations
jQuery.each({
    slideDown: genFx("show", 1),
    slideUp: genFx("hide", 1),
    slideToggle: genFx("toggle", 1),
    fadeIn: { opacity: "show" },
    fadeOut: { opacity: "hide" }
}, function( name, props ){
    jQuery.fn[ name ] = function( speed, callback ){
        return this.animate( props, speed, callback );
    };
});

أنت لا تحتاج إلى البيان إذا في هناك على الإطلاق.يمكنك سلسلة .لا(':الرسوم المتحركة') قبل 'انقر فوق الرمز'.

وكمثال على هذه يتلاشى سوف تعمل فقط إذا كان div لم يكن في طور المتحركة ، وبالتالي التخلص من سيئة طابور المشكلة.

$('a#show_me').toggle(function() {
    $('div#the_money').not(':animated').fadeIn();
}, function() {
    $('div#the_money').not(':animated').fadeOut();
});

كان العمل نفسه .انقر فوق() كذلك.

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