2014-09-10 5 views
-4

J'ai 3 étiquettes <a> dans mon code HTML et elles contiennent chacune 2 images. Seules les images en échelle sont affichées et les autres en sont dépourvues.Cacher/afficher une image en utilisant jquery sur hover

Je souhaite masquer l'image en niveaux de gris lorsque je passe la souris sur l'image en mode Grescale et que je l'affiche en couleur. Et quand je débranche, je veux que l'image colorée soit à nouveau cachée. Comment puis-je faire cela en utilisant jquery? Pourquoi utiliser jQuery et pas du CSS pur?

<a class="mylink" href=""> 
    <img src="img/thumbnails/colored-1.jpg" class="color-image"/> 
    <img src="img/thumbnails/greyscale-1.jpg" class="greyscale-image"/> 
</a> 

<a class="mylink" href=""> 
    <img src="img/thumbnails/colored-2.jpg" class="color-image"/> 
    <img src="img/thumbnails/greyscale-2.jpg" class="greyscale-image"/> 
</a> 

<a class="mylink" href=""> 
    <img src="img/thumbnails/colored-3.jpg" class="color-image"/> 
    <img src="img/thumbnails/greyscale-3.jpg" class="greyscale-image"/> 
</a> 

.color-image 
{ 
    display:none 
} 
+0

Comme dit plus haut réponse upvoted, vous n'avez pas besoin de contrôler JQuery CSS basé sur vol stationnaire – Damian

Répondre

4

Vous pouvez utiliser: survolez et basculez l'affichage des images.

a.mylink:hover .color-image, 
a.mylink .greyscale-image { 
    display: inline; 
} 

a.mylink .color-image, 
a.mylink:hover .greyscale-image { 
    display: none; 
} 

En jQuery, il est juste

function swap(evt) { 
    var isOver = evt.type === "mouseenter"; 
    link.find(".color-image").toggle(isOver); 
    link.find(".greyscale-image").toggle(!isOver); 
} 

$("a.mylink").hover(swap, swap); 
+0

Merci, mais si je voulais ajouter un effet de transition à elle? Je peux toujours le faire en CSS? – Vahid

+0

Il y a des transitions CSS – epascarello

+0

Malheureusement, je suis coincé Je voudrais pouvoir vous donner un indice sur la façon d'écrire ceci dans jquery. – Vahid

2

NO Jquery nécessaire. Utilisez le :hover pseudo sur css l'ancre .myLink, comme:

.color-image { 
    display:none; 
} 

a.myLink:hover .color-image { 
    display: block; 
} 

a.myLink:hover .greyscale-image { 
    display: none; 
} 
+0

Merci cela fonctionne. – Vahid

0

Vous pouvez le faire avec css: vol stationnaire. Passez la souris sur l'image en échelle de gris, affichez: none et l'inverse pour l'image en couleur. Cela a l'avantage de fonctionner lorsque JS est désactivé. Sinon, vous pouvez regarder dans l'interface utilisateur JQuery

1

Ma façon: p

a[class="mylink"]:not(:hover) img[class*="greyscale"], 
a[class="mylink"]:hover img[class*="color"] { 
    display: inline-block; 
} 
a[class="mylink"]:not(:hover) img[class*="color"], 
a[class="mylink"]:hover img[class*="greyscale"] { 
    display: none; 
} 

Voici une démo jsFiddle

http://jsfiddle.net/agaex70r/

Voici une autre jsFiddle avec une transition.

http://jsfiddle.net/agaex70r/2/

+0

'a [class =" mylink "]: pas (: hover)' Yikes – epascarello

+0

@espascarello tu n'as jamais entendu parler de ce type de cours? – Allan

+0

C'est exagéré et cher. Tous vos sélecteurs dans l'exemple sont beaucoup trop. – epascarello