2011-06-11 26 views
5

Hover() öğesinde bir yükseklik değişikliğini canlandırmak için jQuery kullanıyorum.jQuery animasyonu, hoverda() yalnızca ikinci kez tetikleniyor

Vurgulu üzerine, bir .hover sınıfı uygulanır ve tıklatıldığında, bir .expanded sınıfı arasında geçiş yapar. Çoğunlukla uygun animasyon ile çalışır, ancak sadece ilk kez. İlk kez hover, animasyonu tamamen atlayacak.

stumped - burada kusurlu kod:.

$('#expandingbox').hover(

    /*on mouseenter, if not expanded, add hover class*/ 
    function() { 
    if (!$(this).hasClass("expanded")) { 
     $(this).stop(true, true).addClass("hover", "slow"); 
    }}, 

    /*on mouseout, if not expanded, remove hover class*/ 
    function() { 
    if (!$(this).hasClass("expanded")) { 
     $(this).stop(true, true).removeClass("hover", "slow"); 
    } 
}).click(function() { 
    $(this).toggleClass("expanded", "slow"); 
}); 

Ben $ ('# expandingbox') tetiği ('mouseout') ekleyerek bu sorunu çözecektir bir yerde buldum, ama etmedi benim için çalış. Ve burada sorunu yeniden bir örnek: http://jsfiddle.net/Qc42v/


GÜNCELLEME: bir bilet Ekleyen ve bunun bir jQuery böcek çıkıyor. Aynı kod jQuery 1.5 (ve jQuery UI'nin en son sürümü) ile çalışır.

+0

[animate] 'i kullanmayı düşündünüz mü (http://api.jquery.com/animate/)? – ngen

+0

@ngen Sanırım neyin işe yaradığı ile gitmeliyim - şimdilik @ animate() kullanacağım ve bir hata yazacağım. – joseph

cevap

2

Bu, yasal bir jQuery UI hatası olabilir. Önceden bazı rasgele sınıflar eklemek benim için düzeltiyor gibi görünüyor. Giriş: http://jsfiddle.net/Qc42v/9/

Yani temelde böyle:

/*on mouseenter, if not expanded, add hover class*/ 
function() { 
if (!$(this).hasClass("expanded")) { 
    $(this).addClass("xxx"); 
    $(this).stop(true, true).addClass("hover", "slow"); 
}}, 

bu sizin için çok yucky görünüyorsa, belki sadece temel animate() işlevini kullanabilirsiniz? Birisi mutlaka bir hata yapmalıdır: {

+0

Çalıştığına inanamıyorum! Bunu yapmayı nasıl düşündün? Sanırım bir hata yazacağım ve animate'i() deneyeceğim. Bunu hiç kullanmadım, bu yüzden bunu öğrendiğim zaman oldu, sanırım! Teşekkürler! – joseph

+0

Sadece dev içgüdüsü, sanırım :) Rica ederim! – pixelfreak

İlgili konular