2010-10-31 7 views
0

avoir une liste d'images comme une navigation. lorsque vous passez la souris sur eux, une div avec un fond transparent glisse vers le haut. quand vous faites flotter la div glisse vers le bas.jQuery hover animer & cliquer problème

cette partie s'est réveillée comme un charme. Maintenant, lorsque vous cliquez sur l'image ou le titre, la div avec le titre change son opacité à 1, se déplace vers le haut de l'image et gagne 100% de hauteur. Le problème est lorsque je passe la souris sur le div de titre à nouveau. alors comment puis-je arrêter l'effet de hover out sur clic?

j'ai déjà essayé une vue des solutions aux problèmes semblables mais n'ai pas commencé à travailler .. je suis assez nouveau à jQuery ainsi n'importe quelle aide serait appriciated.

voici le code à ce jour avec un essai en utilisant .unbind:

var thumbslide = $('.boxgrid.captionfull').hover(
    function() { //Hover over 
     $(this).children('.cover').stop().animate({'top':'130px'},{queue:false,duration:350}); 
    },function() { //Hover out 
     $(this).children('.cover').stop().animate({'top':'230px'},{queue:false,duration:350}); 
    } 
    ).click(function() { 
     $(this).children('.cover').stop().animate({'top':'0px', height:"230px", opacity:"1"},{queue:false,duration:350}).unbind('mouseleave'); 
}); 

Répondre

0

C'est parce que vous êtes les délier enfants, pas l'élément que vous êtes. Réorganisez-le comme ceci:

$(this).unbind('mouseleave').children('.cover').stop().animate({'top':'0px', height:"230px", opacity:"1"},{queue:false,duration:350}); 
+0

c'est un mouvement intelligent. Merci pour le conseil. mais maintenant le statut cliqué sur un élément reste quand je clique sur un autre. alors dans ce cas, je suppose que je dois relier le clic à nouveau? – tobiasmay

+0

@tobiasmay - essayer cela, avoir à courir si ne peut pas tester pour le moment, mais devrait fonctionner: http://jsfiddle.net/nick_craver/snAae/ –

+0

merci pour la réponse rapide, mais malheureusement la classe "cliqué" reste, une fois que le div est cliqué. – tobiasmay

0

vous pouvez simplement vérifier l'opacité ou Largeur en vol stationnaire hors ...

dans le vol stationnaire hors fonction que vous faites

if($(this).children('.cover').css('opacity')!=1){ 
$(this).children('.cover').stop().animate({'top':'230px'},{queue:false,duration:350}); 
} 
+0

hmm .. fonctionne aussi bien comme il se doit .. mais lorsque je survole l'élément cliqué, il s'anime au premier survol de l'état. et il reste au sommet aussi bien quand je clique sur un autre élément .. – tobiasmay