2011-02-15 6 views
1

J'ai un problème avec ces événements. Je ne suis pas sûr de ce qui est le meilleur à utiliser. J'essaye de faire une animation d'opacité en fonction de l'emplacement de la souris.mouseenter, mouseleave, hover jQuery

Je ces structures

<div class="thumbnail-wrapper"> 
<a href="#">   
<img class="thumb" src="image/image1.png" /> 
</a> 
<a href="#">  
<img class="thumb" src="image/image2.png" /> 
</a> 
<a href="">  
<img class="thumb" src="image/image3.png" /> 
</a> 
<a href="#">  
<img class="thumb" src="image/image4.png" /> 
</a> 
<a href="#">  
<img class="thumb" src="image/image5.png" /> 
</a>  
</div> 

Fondamentalement, ce que je veux faire est à chaque fois que la souris entre l'image, le reste des images (autre que lorsque la souris est) fera animer le changement d'opacité à savoir : $(img).stop().not(this).animate({"opacity":"0.4"}) et où la souris est animera à l'opacité: 1.

S'il vous plaît aider quelle est la meilleure approche à ce sujet. J'ai essayé de planer mais j'ai échoué.

TIA

Répondre

2

Je vous suggère d'utiliser .delegate()help pour lier un gestionnaire d'événements à l'div.thumbnail-wrapper d'emballage. Attraper tous les événements mouseenter à partir des nœuds <img>. Utilisez .fadeTo()help et .siblings()help pour accomplir la tâche.

Exemple:

$('div.thumbnail-wrapper').delegate('a', 'mouseenter', function(e) { 
    $(this).stop(1,0).fadeTo('fast', 1).siblings().stop(1,0).fadeTo('fast', 0.2); 
}); 

Demo: http://www.jsfiddle.net/qR2NU/2/
(j'utilise div nœuds dans l'exemple, vous devez remplacer div avec img dans les .delegate() arguments)

+0

@jAndy Désolé, j'ai édité le HTML, comment puis-je le réviser parce que le img est emballé avec voir mise à jour html .. merci – Marvzz

+0

salut jAndy .. juste une question, à l'intérieur du délégué fn, «e.target» est égal à la «ceci»? – stecb

+0

@steweb: pas nécessairement! Imaginez que les balises '' seraient entourées d'un' ', alors le' e.target' représenterait le 'span' et' this' le ''. Donc, en général, il serait préférable d'utiliser '$ (this)'. – jAndy

2
$('.thumbnail-wrapper img') //all images under the wrapper 
    .bind('mouseenter',function(){//when mouseenter,blur me,focus my siblings 
    $(this).animate({"opacity":"0.4"}).siblings().animate({"opacity":"1"}); 
}).bind('mouseleave',function(){// when mouse out, default state or (make me sober as i call it) 
    $(this).animate({"opacity":"1"}) 
}); 
+0

salut, ive édité mon html, je n'arrive pas à le faire fonctionner avec planer? pouvez-vous élaborer plus la mise en œuvre? – Marvzz

+0

lorsque la souris entrer Je veux flouter le reste, pas celui sélectionné. – Marvzz

+0

changer l'opacité '0.4' à' 1' et '1'' '0.4' devrait être ok – Val

0
$('.thumbnail-wrapper img').hover(function(){ 
    $(this).siblings().animate({'opacity': 0.4}); 
}, function(){ 
    $(this).siblings().animate({'opacity': 1}); 
}); 
Questions connexes