2011-01-10 5 views
4

Lets sagen, dass ich den folgenden HTML haben ...Hinzufügen einer Klasse auf Klick von Anchor-Tag

<a class="active" href="#section1">Link 1</a> 
<a href="#section2">Link 2</a> 

Wenn ein Link 2 geklickt Ich mag es würde die aktive Klasse und entfernen Sie die Klasse von Link 1 erhalten selbst, so würde es effektiv werden:

<a href="#section1">Link 1</a> 
<a class="active" href="#section2">Link 2</a> 

Dies sollte in beide Richtungen funktionieren. Ie. Auf welche Verknüpfung auch geklickt wird, ruft die Klasse auf und entfernt sie von der anderen.

Wie kann dies mit jQuery gemacht werden? Vielen Dank im Voraus!

Antwort

12

Bearbeiten: hinzugefügt jsfiddle

http://jsfiddle.net/LJ6L5/

+1

Es ist nicht ideal, jedes Ankerelement auf der Seite zu aktivieren. Es verwendet viel Speicher und ist wahrscheinlich nicht UX/UI-freundlich. –

+0

stimme zu ................ – Vivek

+0

Nun, nach deinem ursprünglichen Beitrag hast du nur 2 Anker. – switz

2

Verwenden Sie einfach: addClass und removeClass

Aber erste Grenze Ihre aktivierbare Verbindungen mit der zweiten Klasse ('aktivierbare') nicht anderen Links auf Seite beeinflussen:

$("a.activable").click(function(){ 
    $("a.activable.active").removeClass("active"); 
    $(this).addClass("active"); 
}); 

Mit HTML:

<a class="activable active" href="#section1">Link 1</a> 
<a class="activable" href="#section2">Link 2</a> 
+0

@ gertas-sorry für nicht Problem zu erklären, eigentlich Zum ersten Mal keine der Links, die eine Klasse haben, auf einer Fi Erstes Klicken Ich muss eine Klasse zu dieser Verbindung hinzufügen und dann sollte es auf die gleiche Weise wie ich sagte in Frage? – Vivek

+0

Mine unten wird damit arbeiten. – switz

+0

Nur "aktiv" weglassen. Wenn Sie keine 'activable' Klasse verwenden, wird jeder Anker auf der Seite in die Verwendung von aktiven Links fallen. –

0

HTML:

<a class="myrefclass" href="#section1">Link 1</a> 
<a class="myrefclass active" href="#section2">Link 2</a> 

JS:

var ref = $("a.myrefclass"); 
$(ref).bind('click', function() { 

    if (!$(this).hasClass("active")) { 

     $(ref).removeClass("active"); 
     $(this).addClass("active); 
    } 

}); 

JS II (für einen Kommentar):

var ref = $("a.myrefclass"); 
$(ref).bind('click', function(ev) { 

    if (!$(this).hasClass("active")) { 
     ev.stopPropagation(); 
     return false; 
    } 

    $(ref).removeClass("active"); 
    $(this).addClass("active); 

}); 
+0

Was ist, wenn ich bereits eine Funktion on onclick dieser Links – Vivek

+0

aufgerufen habe, aber in diesem Fall müssen Sie Tests durchführen, um zu sehen, wenn zuerst das Ereignis "onClick" in verschiedenen Browsern aufruft, wenn Sie es mit jQuery tun, erstellen Sie ein anderes Ereignis nach der Kontrolle –

Verwandte Themen