2016-04-12 5 views
2

Ich bin neu in Javascript. Ich möchte eine 'animated fadeInLeft' Klasse zu einem Bild hinzufügen, wenn der div-Umbruch eine Klasse 'active' hat und die 'animated fadeInLeft' Klasse entfernt, wenn das div seine 'aktive' Klasse verloren hat. Irgendwie funktioniert es nicht richtig. HierJavascript: Wenn hasClass dann addClass

ist die Javascript-Code:

<script> 
    $(document).ready(function() { 
    if ($('#section1').hasClass('active')) { 
     $('#blueleft').addClass('animated fadeInLeft'); 
    } 
    else { 
     $('#blueleft').removeClass("animated fadeInLeft"); 
    } 
    }); 
</script> 

Hier ist der HTML ist:

<div class="section" id="section1"> 
    <h2>Wireless Digital Music System</h2> 
    <p>Streaming tracks</p> 
    <img id="blueleft" class="blueleft" src="img/blueleft.png" alt="blueleft"> 
    <img id="blueright" class="blueright" src="img/blueright.png" alt="blueright"> 
</div> 

Ich habe eine andere Javascript-Skript ausgeführt wird, die die 'aktive' Klasse zu einem div Abschnitt hinzuzufügen. Es gibt kein Problem damit. Wenn ich 'div.section' anstelle von '# section1' setze, wird das ganze Skript ausgeführt, und es wird '#blueleft' eine Klasse hinzugefügt. Ich kann es vom Inspektor aus sehen, es wird auch eine Animation zeigen, weil ich animated.css benutze. Aber es wird nicht funktionieren, wenn ich '# section1' setze. Es wird die Klasse "animated fadeInLeft" nicht hinzugefügt. Ich muss ID anstelle von Klasse verwenden, weil ich andere divs habe, die auch den Klassennamen 'section' haben, aber sie haben unterschiedliche IDs. Weiß jemand, was das Problem sein könnte?

+0

können Sie den Code aus einem anderen Javascript einfügen Klasse aktiv zu div Abschnitt einfügen –

+0

'# section1' hat keine' aktive' Klasse, so dass es 'removeClass' ausgeführt wird, um Klassen zu entfernen, die auch nicht vorhanden sind. Was erwartest du zu passieren? Klingt so, als hätten Sie doppelte IDs, die ungültig sind und nur die erste ausgewählt wird. –

+0

'div class =" Abschnitt aktiv "id =" Abschnitt1 ">' –

Antwort

-2
if($("div#section1.active").length){ 
    $('#blueleft').addClass('animated fadeInLeft'); 
} else { 
} 
+2

Warum sollten die Änderungen, die Sie in diesem Spiel von Spot-the-Unterschied Hilfe gemacht haben? – Quentin

0

Wenn Sie mehrere div mit der gleichen ID aufweisen, sind, dann ist dies ungültige HTML und das Problem ist, wenn Sie ein Element mit $ (‚# elementId‘) zugreifen wird es nur das erste Element in HTML gefunden zurückkehren so Sie müssen, wie unten für jede Schleife verwenden,

$('div[id^="section1"]').each(function(){ 
    if ($(this).hasClass('active')) { 
     $(this).find('#blueleft').addClass('animated fadeInLeft'); 
    }else { 
     $(this).find('#blueleft').removeClass("animated fadeInLeft"); 
    } 
}) 

dies mit section1 id all das Element finden und die Logik anwenden.

+0

"Wie Sie mehrere div mit der gleichen ID haben" - Was denkst du das? Die Frage zeigt keine doppelten IDs im Code und die Verwendung einer Zahl in der ID impliziert, dass die IDs eindeutig sind. – Quentin

+0

@Quentin In Frage hat er erwähnt, dass er einige ** divs hat, die auch 'section' genannt werden **, also dachte ich, er müsste für jede Schleife verwenden, wenn sie dieselbe ID zu mehreren divs haben. Vielen Dank. –

+0

Der Code zeigt, dass "Abschnitt" ist ein ** Klasse ** Name nicht die ** ID ** – Quentin

Verwandte Themen