jQuery SwitchClass
-
27-09-2019 - |
سؤال
هل من الممكن التراجع switchClass
انتقال؟
أريد عنصرًا للحصول ببطء على الفصل A
بينما تحوم فوقه ، وتفقده ببطء مرة أخرى بمجرد أن يتحرك الماوس بعيدًا. ومع ذلك ، يبدو أن الوظيفة رائعة ، والاتصال .stop(0,1)
لا يبدو أن يساعد. في الواقع ، يبدو أن يكسرها.
لدي مثال مباشر هنا. نعم ، إنها صفحة 404 ، لكن هذا ليس مهمًا. يجب أن يكتسب الملاحة ببطء أو فقدان الفصل ، لكنه يقفز فقط. يمكن العثور على البرنامج النصي هنا.
هل هذا الانتقال ممكن؟
تعديل:
هذا هو الرمز الذي أستخدمه:
$('#navbar li:not(.current) a').hover(function() {
$(this).parent()
.stop(1,0)
.addClass('current', 1000);
}, function () {
$(this).parent()
.stop(1,0)
.removeClass('current', 1000);
});
هل ربما لأن تغيير فئة li
لا ينتج عن أسلوب نقل أطفالها؟
EDIT2:
نعم ، هذا "إصلاحه". يمكن الآن ملاحظة الأخطاء الحقيقية بكل مجدها (يتم تجميدها في حالة وسيطة).
المحلول
هذا هو الأقرب الذي جئت لجعله يعمل:
مثال: http://jsfiddle.net/turvp/
قد يكون هناك بعض المبالغة ، وقد تتمكن من استخدام :animated
المحدد ، على الرغم من أنني واجهت مشاكل في البداية.
قد لا تستحق الجهد ...
لغة البرمجة
<div id='myElement' class='blue'>content</div>
CSS
div {
width: 100px;
height: 100px;
}
.blue {
background: blue;
position:relative;
left: 20px;
}
.myClass {
background:red;
margin-top: 50px;
}
jQuery
var animating = false;
var interval;
$('#myElement').hover(
function() {
var $th = $(this);
if(!animating && !interval) {
$th.clearQueue();
animating = true;
$th.addClass('myClass',500,function() {animating=false;});
}
},
function() {
var $th = $(this);
if(interval) return false;
if(animating) {
interval = setInterval(function() {
if(!animating) {
$th.clearQueue();
animating = true;
$th.removeClass('myClass',500, function(){animating = false;});
clearInterval(interval);
interval = null;
}},50)
} else {
$th.clearQueue();
$th.removeClass('myClass',500, function(){animating = false;});
}
}
);
نصائح أخرى
يبدو أنك تبحث عن شكل من أشكال الوظيفة.
$('#clickme').hover(function() {
$('#book').animate({
opacity: 0.25,
left: '+=50',
height: 'toggle'
}, 5000, function() {
// Animation complete.
});
});
وإلا فإن تبديل الفصل ببطء لا يكون له معنى كبير بالنسبة لي
ليس من المنطقي الحصول على فصل ببطء. يحتوي العنصر إما على فئة معينة أو لا ، ولا يوفر CSS أي طريقة للإشارة إلى نوع من "التضمين الجزئي" في الفصل.
تعديل - يشير Patrick إلى أن jQuery UI يدعم ذلك بالفعل ، على الأقل إلى حد ما. تستغرق وظائف الطبقة المنطقية وسيطة مدة إذا قمت بتثبيت الأشياء.