2011-09-12 4 views
1

Je rencontre un petit problème avec jQuery et une image. J'essaye de créer un système simple où une image change sur le vol stationnaire (que j'ai fait fonctionner avec jQuery .hover()) cependant j'essaye maintenant de le configurer ainsi si l'utilisateur clique dessus l'image, la source est changée en permanence pour l'image stationnaire.jQuery Modification d'une image sur le vol stationnaire, puis maintien de l'image sur le clic

Le problème que j'ai est quand je clique, la source change, mais quand je passe la souris, elle revient à l'image "off"! Un problème si simple mais je ne trouve pas de solution.

Le code de vol stationnaire:

$("#image").hover(function() { 
      $(this).attr("src", getImageSourceOn("image")); 
     }, function() { 
      $(this).attr("src", getImageSourceOff("image")); 
}); 

Les fonctions getImageSourceOn/Off revenir simplement une chaîne en fonction du paramètre avec la nouvelle source.

Le code onClick:

var imageSource = $(imageID).attr("src"); 
    var onOff = imageSource.substring((imageSource.length - 5), (imageSource.length - 4)); 
    if (onOff == "F") 
    { 
    //alert("Off\nstrID = " + strID); 
    $(imageID).attr("src", getImageSourceOn(strID)); 
    } 
    else 
    { 
    //alert("On"); 
    $(imageID).attr("src", getImageSourceOff(strID)); 
    } 

Ce code prend juste la source et recherche On/Off dans la source pour mettre à l'opposé de l'image. J'ai essayé d'utiliser .toggle() au lieu de cette méthode de sous-chaîne mais je ne pouvais pas le faire fonctionner.

+0

Je suggère d'utiliser background-image propriété CSS et juste changer l'arrière-plan-image-position car la modification de l'attribut src ne s'affichera pas tant que l'image n'aura pas été téléchargée et que, pour la première fois, elle ne montrera pas les changements. – Burimi

Répondre

2

Déclarez une variable globale. Joindre une fonction sur l'événement click:

var clicked = false; 

$("#image").click(function(){ 
    if(!clicked) 
    clicked = true; 
    else 
    $(this).attr("src", getImageSourceOff("image")); 
}); 

modifier Ensuite, vous hover Code

$("#image").hover(function() { 
     $(this).attr("src", getImageSourceOn("image")); 
    }, function() { 
    if(!clicked) 
     $(this).attr("src", getImageSourceOff("image")); 
    }); 
+0

Merci beaucoup Rolando. Avec ce système, l'image reste la même lorsqu'on clique dessus. Cependant, j'aimerais que l'image soit de nouveau affichée quand on clique dessus. –

+0

Puis modifiez votre fonction de clic. Je vais modifier la réponse. –

+0

Merci Rolando. Comment pourrais-je adapter le code pour le rendre réutilisable? À l'heure actuelle, il fonctionne pour un clic sur et hors, mais pas d'autres. –

Questions connexes