لا مسج ":الرسوم المتحركة" محدد تطابق العناصر التي تستخدم fadeIn() و fadeOut()?
سؤال
أحاول منع النقرات على قائمة البند في حين أن الرسوم المتحركة التي تحدث.حتى في الجزء العلوي من فوق معالج, أريد أن أفعل شيئا مثل هذا:
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();
});
كان العمل نفسه .انقر فوق() كذلك.