2010-02-11 17 views
15

Ich habe 4 Anker, ich möchte eine Klasse von Strom zu einem Anker hinzufügen, wie es angeklickt wird und entfernen Sie die Klasse von den anderen 3 zur gleichen Zeit. Hier ist mein Code. Was mache ich falsch?jquery add remove Klasse

if ($("ul#thumb a").hasClass("current") { 
    $("ul#thumb a").removeClass("current"); 
    $(this).addClass("current"); 
}); 

und meine html sieht wie folgt aus:

<ul id="thumbs"> 
    <li> 
     <!-- intro page navi button --> 
     <a id="t0" class="active" name="t0">The Company</a> 

     <ul class="navi"> 
      <li><a style="display:none"></a></li> 
      <li><a id="t1" name="t1">The Brief</a></li> 
      <li><a id="t2" name="t2">The Solution</a></li> 
      <li><a id="t3" name="t3">The Result</a></li> 
     </ul> 

    </li> 
</ul> 
+0

Wie sieht Ihr HTML aus? – Sampson

+0

Was genau funktioniert nicht? Wird die Klasse nicht entfernt oder werden die Klassen nicht hinzugefügt? Außerdem sieht dies nicht wie die gesamte Menge von jQuery aus. Sie benötigen eine Art '$ ('ul # thumb a'). Click (function() {...});' um es zu umbrechen. –

+0

@Topher Ich habe meinen Beitrag geändert, um meinen HTML-Code anzuzeigen – mtwallet

Antwort

29

von Ereignis-Delegation mit, wir nur einen Handler für alle Click-Ereignisse binden. Wenn ein Anker (außer dem .current Anker) angeklickt wird, wir die .current Anker seiner Klasse abzustreifen und das geklickt Anker machen eine neue Strom:

$("#thumbs").on("click", "a:not(.current)", function (event) { 
    $(".current", event.delegateTarget).removeClass("current"); 
    $(this).addClass("current"); 
}); 
+0

+1 - Guter Fang. Ich änderte den Beitrag und sah das nicht = P –

+0

@ Jonathan Ich habe meinen Beitrag geändert, um meine html zu zeigen – mtwallet

+0

@ Jonathan Sampson was bedeutet 'e.preventDefault();'? +1 übrigens – ant

0

ich denke, das Sie

helfen
$("a").click(function() { 
    $('a').removeClass('current'); 
    var id = $(this).attr('id'); 
    $('#'+id).addClass('current'); 
}); 
+0

Warum mischen Sie '$' und 'jQuery'? Sie sollten einen auswählen und dabei bleiben. – Lix

+1

Entschuldigung, es war ein Fehler .. Sie können einen verwenden – Raghvendra