2009-08-14 5 views
0

Je souhaite étendre un code JQuery pour remplacer une image une fois que je clique dessus. J'ai ceci:JQuery remplacement du problème d'image

var minimiseContent = function(e) 
{ 
    var targetContent = $('div.itemContent', this.parentNode.parentNode); 
    if (targetContent.css('display') == 'none') { 
     targetContent.slideDown(300); 
     var minIcon = $('minimise', this.parentNode.parentNode); 
     $(minIcon).attr("src", "../IMG/btnMinimise.png"); 

    } else { 
    targetContent.slideUp(300); 
     var minIcon = $('minimise', this.parentNode.parentNode); 
     $(minIcon).attr("src", "../IMG/btnMaximise.png"); 

    } 
    return false; 
}; 

qui est appelé à partir de celle-ci:

$ ('a.minimise') se lient (clic, minimiseContent);.

et déclaré comme ceci:

<a href="#" class="minimise"><img src="../IMG/btnMinimise.png" class="minimise" /></a> 

essentiellement les deux lignes dans la première partie du codage devraient gérer à savoir

var minIcon = $('minimise', this.parentNode.parentNode); 
      $(minIcon).attr("src", "../IMG/btnMinimise.png"); 

et

 var minIcon = $('minimise', this.parentNode.parentNode); 
     $(minIcon).attr("src", "../IMG/btnMaximise.png"); 

Mais je ne savoir pourquoi l'image n'est pas remplacée. minimiser est une classe dans le fichier css. Le reste du codage fonctionne.

J'ai essayé de remplacer $ (minIcon) par $ (this), $ (img.minimise), mais aucun ne fonctionne. Quelqu'un sait-il des solutions?

Répondre

2

Ma première impression est que vous voulez remplacer:

var minIcon = $('minimise', this.parentNode.parentNode); 

Avec ceci:

var minIcon = $('img.minimise', this.parentNode.parentNode); 
+0

Cheers. Je pensais que j'avais déjà essayé - comme écrit dans mon post initial - mais c'est arrivé au travail. Merci – waqasahmed

0

Vous n'avez pas besoin de la balise <a>. La balise img peut également avoir un événement click.

Aussi, je pense que c'est un bon cas d'utilisation de la fonction toggle:

$("img.minimise").toggle(
    function() { 
    $(this).attr("src", "../IMG/btnMinimise.png") 
    }, 
    function() { 
    $(this).attr("src", "../IMG/btnMaximise.png"); 
    } 
); 

Il alterne appels de fonction à chaque clic.

+0

Merci, mais je trouve que le comportement de la bascule est imprévisible. J'utilise jQuery 1.1.2 alors peut-être que c'est le problème? Mais je ne peux pas améliorer. Le comportement par exemple fait beaucoup glisser vers le haut, et glisser vers le bas sur un clic. Est-ce possible par la façon dont il est codé dans mon code initial? – waqasahmed

+0

en fait drs9222 a résolu .. merci encore – waqasahmed

Questions connexes