JQuery fadeIn/fadeOut علة - fadeTo يعمل بشكل صحيح

لقد تعرفت على سلوك وظيفة jQuery fadeIn() ، التي تبدو خاطئة بالنسبة لي.

يجب أن تكون هذه التعليمات البرمجية المتكررة مكافئة:

function fadeIn1(){
    $("#fadediv1").stop(true).fadeIn(2000); 
}

function fadeOut1(){
    $("#fadediv1").stop(true).fadeOut(2000);            
}

و:

function fadeIn2(){
    $("#fadediv2").stop(true).fadeTo(2000, 1);  
}

function fadeOut2(){
    $("#fadediv2").stop(true).fadeTo(2000, 0);          
}

But actually example 1 behaves strange. I've created an example page, where you can test it yourself: http://neo1.fomalhaut.uberspace.de/virtualGuitar/example.html

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

في المثال السفلي يعمل كل شيء كما أتوقع ، هنا استخدمت الدالة fadeTo.

الآن يمكن لأحد أن يقول لي أنني على حق ، وهذا السلوك لا ينبغي أن يحدث ، لأن fadeIn و fadeOut مثل FadeTo مع 1 و 0 مثل عتامة الهدف؟ أو أنا مخطئ وهذا من المفترض أن يكون هكذا ، لسبب ما؟

إصدار jQuery هو الإصدار الأحدث (1.7.2) ، وتم اختباره في Chrome و Firefox و Opera.

4
نعم ، هذا يبدو وكأنه خطأ. ملاحظة جيدة.
وأضاف المؤلف SexyBeast, مصدر
جربها مثل $ ("# fadediv1"). not (": animated"). stop (true، true) .fadeIn (2000) & zwnj؛؛
وأضاف المؤلف Imdad, مصدر
ربما الإبلاغ عنها ومعرفة ما يقولونه: bugs.jquery.com/newticket؟redirectedfrom=
وأضاف المؤلف eivers88, مصدر

1 إجابة

مشكلتك هي أن .stop() يقوم بتعيين نمط تعتيم جديد على العنصر ، أينما كنت عندما تم تشغيل .stop (). لذا ، فإن jQuery الآن يعتقد أن العتامة يجب أن تكون متحركة إلى حيث كان عندما تم إيقافها أثناء تتابع أوتوماتيكي.

يمكنك استخدام fadeTo() ، كما أظهرت في العرض التوضيحي. أو يمكنك استخدام شيء مثل:

$ ("# fadediv1"). stop (). تنشيط ({'opacity': 'toggle'} ، 2000) ؛

سيتذكر خيار التبديل القيم القصوى/الدنيا. لذا إذا قمت بتعيين fadediv كـ opacity : 0.5 في CSS ، فسيتم تحريكه فقط بين 0 و 0.5.

1
وأضاف
حسنا ، هذا يمكن أن يكون تفكيرا ، لكنني أضفت هذا إلى bugtracker jQuery وقبلوا هذا على أنه خطأ ، وإن كان بأولوية منخفضة. bugs.jquery.com/ticket/11987
وأضاف المؤلف bweber, مصدر
بالنسبة إلى أي شخص يشاهد هذا الأمر في نهاية الأمر ، تم إغلاق هذه التذكرة كمكررة للتذكرة التي تم إغلاقها لاحقًا على أنها ليست خطأ ، وذلك نظرًا لسبب سردها أعلاه. من "الصواب" أن يتصرف بهذه الطريقة ، إن لم يكن مرغوبًا حقًا. bugs.jquery.com/ticket/10462#comment:6
وأضاف المؤلف George Pantazis, مصدر