2016-04-17 4 views
0

Ich habe ein "Projekte" -Objekt. Jedes Projekt hat ein div und ein anderes div darin, welches versteckt ist. Ich möchte mehrere FadeToggle() Effekte erstellen, so dass für jedes Projekt - wenn man auf das erste div klickt, der eine div angezeigt wird.Mehrere FadeToggle() ist in einer for-Schleife?

Ich habe versucht, dies mit einer einfachen for-Schleife zu tun.

projects.display = function() { 
for (var i = 0; i < projects.length; ++i) { 
    var projectID = "#projects-" + i; 
    var moreInfoID = "#projects-" + i + "-more"; 

    // assign IDs for current project 

    $(projectID).click(function() { 
      $(moreInfoID).fadeToggle(); 
    });  
}}; 

Das Ergebnis dieses Code ist, dass zu zeigen, bis eine der Haupt divs löst die versteckte div des letzten Projektes klicken.

Wie kann ich es so einrichten, dass das Klicken auf ein Hauptdiv fadeToggle() für das angegebene versteckte div aufruft?

Antwort

0

Glauben Sie nicht, for Schleife ist notwendig. Sie sollten Attribut beginnt mit und Attribut endet mit Selektoren, :has() oder :not()

$("[id^=projects]:has([id$=more])").click(function() { 
    $("[id$=more]", this).fadeToggle() 
}) 
+0

Siehe auch ersetzen können http://stackoverflow.com/questions/19871627/javascript-for-loop-scope-takes-last- Variable – guest271314

+0

Danke! Die verlinkte Frage erklärte die Dinge perfekt und löste mein Problem. – HornedDemoN

Verwandte Themen