2009-08-14 20 views
0

Ich möchte einige JQuery-Code zu einem Bild zu ersetzen, sobald ich darauf klicken. Ich habe dies:JQuery ersetzen Bild Problem

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; 
}; 

, die daraus genannt wird:

$ ('a.minimise') binden ('Klick', minimiseContent);.

und erklärte wie folgt:

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

die beiden Linien im ersten Teil der Codierung sollte es im Wesentlichen, dh

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

und

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

Griff Aber ich nicht weiß, warum das Bild nicht ersetzt wird. Minimieren ist eine Klasse in der CSS-Datei. Der Rest der Codierung funktioniert.

Ich habe versucht, $ (minIcon) mit $ (this), $ (img.minimise) zu ersetzen, aber keine funktionieren. Kennt jemand irgendwelche Lösungen?

Antwort

2

Mein erster Eindruck ist, dass Sie diese ersetzen möchten:

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

mit diesem:

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

Prost. Ich dachte, ich hätte es schon versucht - wie in meinem ersten Post geschrieben - aber es hat funktioniert. Danke – waqasahmed

0

Sie brauchen nicht die <a>-Tag. Das img-Tag kann auch ein Klickereignis haben.

Außerdem glaube ich, ist dies ein guter Anwendungsfall für die toggle Funktion:

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

Es wechselt Funktion auf jedem Klick aufruft.

+0

Danke, aber ich finde das Verhalten des Toggle ist unvorhersehbar. Ich benutze jQuery 1.1.2, also ist das vielleicht das Problem? Aber ich kann nicht upgraden. Das Verhalten führt zum Beispiel dazu, dass viele nach oben rutschen und mit einem Klick nach unten rutschen. Ist es möglich durch die Art, wie es in meinem ursprünglichen Code codiert ist? – waqasahmed

+0

eigentlich drs9222 hat es gelöst .. danke nochmal – waqasahmed