11496 sujets

JavaScript, DOM et API Web HTML5

Bonjour,
J'ai créé un très simple panel d'admin pour un site, listant quelques actions à mener (vider cacher, régénérer etc ...). Pour faire simple, je liste donc sur une page des liens vers des fonctions, auprès de chaque lien j'ai une icône (<img>) qui grâce à une fonction jquery change lorsqu'on clic dessus, montrant donc à l'administrateur que l'action a été faite.
J'utilise ce code :

Fonction :
<script type="text/javascript">
		  $(function(){
      $(".img-swap-ingr" ).live('click', function() {
        
          this.src = this.src.replace("_1","_2" );
        
      });
    });</script>


Dans le html :
<a href="videcache.php" target="cacherub" class="img-swap-ingr"><img src="../images/bookmark2_1.png" width="32" height="32" border="0" class="img-swap-ingr">VIDER LE CACHE DES FLUX COMPLEMENTAIRES </a>


Jusque là tout roule, ce que je veux faire fonctionne à merveille > Lorsqu'on clic sur l’icône de base l'action est lancée et l’icône change.

Le problème que je n'arrive pas à résoudre est que je voudrais que l'icône change aussi lorsqu'on clic sur le lien texte. Des idées ?

Merci d'avance.
Salut,

Si je ne dis pas de bêtise, ton code .js tente de changer la source de l'objet sur lequel tu cliques. Ta classe est posée sur la balise <a>, et là çà ne marche pas (pas d'attribut src sur <a>), et sur la balise <img> où là ça fonctionne.

Je me contenterai de mettre la fonction sur la balise <a> (enlève la classe sur <img> ou utilise une autre classe si tu en as besoin dans ta .css), l'image et le libellé faisant partie de la balise, et la fonction .js vient mettre à jour l'image "enfant" du lien hypertexte.
Un truc de ce genre (écrit à l'arrache et sans contrôle Smiley smile ) :


$(function(){
      $(".img-swap-ingr" ).live('click', function() {
          $(this).children('img').src = $(this).children('img').src.replace("_1","_2" );
      });


Manu
Merci Manu. j'ai essayé ta méthode qui semble logique, mais ça n'a pas fonctionné. Je n'ai pas eu beaucoup de temps devant moi aujourd'hui pour trop m'y plonger.