2011-05-11 5 views
2

Essaie de superposer une image "B" sur l'image "A" lorsque la souris survole l'image "A". Idéalement, je veux qu'il se fanent dansjQuery hover() clignotant/fondu

HTML.

<div id="prod-image"> 
     <img src="../imgs/products/mens/image-A.jpg" class="box-shadow" /> 
    </div> 
    <div id="prod-overlay"> 
     <img src="../imgs/image-B.jpg" /> 
    </div> 

jQuery:

$(function() { 
    $("#prod-image").hover(function() { 
     $(this).next().fadeIn().show(); 
    }, function() { 
     $(this).next().fadeOut().hide(); 
    }); 
    }); 

problème est à chaque fois que la souris déplace déclenche à nouveau l'effet hover signifie qu'il clignote sur et en dehors comme redéclenche chaque pixel que la souris déplace. Comment est-ce que je peux le faire seulement déclencher la deuxième action quand nous quittons la div de conteneur, pas seulement déplacer dedans dedans?

Merci pour toute aide.

[EDIT]

CSS:

#prod-overlay { 
    display: none; 
    position: absolute; 
     z-index: 999; 
    top: 0px; 
    } 

Fondamentalement, il se trouve juste cette div au-dessus de l'autre. Je ne pense pas que ce soit vraiment pertinent? À moins que l'index z ne gâche les choses.

[EDIT 2]

pour tous ceux qui pourraient prendre soin/tomberez sur cette ... ce le fixe:

$("#prod-image").hover(function() { 
    $("#prod-overlay").stop(true).fadeTo("normal",1); 
}, function() { 
    $("#prod-overlay").fadeTo("normal",0); 
}); 

semble un peu inutile pour moi, mais qui suis-je pour critiquer jQuery?

+0

Pourriez-vous également publier des CSS avec ce code? – pixelbobby

+0

Je pense que vous devriez utiliser 'mouseenter'' mouseleave' au lieu de 'hover' selon votre besoin – diEcho

Répondre

1

Qu'en est-il de l'obtention de vos 2 images dans un même conteneur et appliquer votre déclenchement de vol stationnaire sur ce conteneur?

<div id="container"> 
    <div id="prod-image"> 
     <img src="../imgs/products/mens/image-A.jpg" class="box-shadow" /> 
    </div> 
    <div id="prod-overlay"> 
     <img src="../imgs/image-B.jpg" /> 
    </div> 
</div> 

et

$(function() { 
$("#container").hover(function() { 
    $("#prod-overlay").fadeIn().show(); 
}, function() { 
    $("#prod-overlay").fadeOut().hide(); 
}); 
}); 

Il devrait fonctionner!

+0

Merci, cela corrige à peu près, il ne disparaît pas si elle disparaît juste, pourquoi serait-ce? – artparks

+0

En fait, c'est assez peu fiable, la moitié du temps, il ne cache pas du tout. Cela devrait être si simple! – artparks

+1

fadeOut et hide sont exécutés en même temps, donc il se cache avant même qu'il ne commence à s'estomper. En réalité, vous n'avez pas besoin d'avoir la partie hade car elle sera cachée une fois le fadeOut terminé. – Tom