2012-04-03 9 views
0

ich eine sehr einfache Frage haben, tatsächlich das ist nicht die Frage, das die Javascript-Fehler ist Fixierung, trotzdem, hier ist der Code:removeClass funktioniert nicht

$(document).ready(function() { 
     $('#accordion a.item').click(function() { 
      $(this).addClass('selected'); 
      $(this).removeClass('selected'); 
      $('#accordion li').children('ul').slideUp('slow'); 
      $(this).siblings('ul').slideDown('slow'); 
     }); 
    }); 

und die html:

<ul id="accordion"> 
    <li> 
     <a href="#" class="item">BANKS</a> 
     <ul>BLA BLA BLA</ul> 
    </li> 
    <li> 
     <a href="#" class="item">PETROL</a> 
     <ul>BLA BLA BLA</ul> 
    </li> 
</ul> 

Wenn ich auf einen der Links klicke, wird die 'ausgewählte' Klasse hinzugefügt, aber wenn ich auf den anderen Link klicke, wird die Klasse 'selected' nicht entfernt, was kann der Fehler sein?

danke Ihnen allen für die Hilfe! Ich schätze es wirklich!

+0

Sie fügen die Klasse für dasselbe Element hinzu und entfernen sie. Ist das ein Tippfehler? –

+0

Ich sehe nicht, wie die Klasse 'selected' hinzugefügt werden kann - Ihr Code fügt dann die Klasse sofort aus dem Anker, auf den geklickt wurde. –

+0

Eigentlich was machst du, es ist wie zuerst Sie werden Klasse zum angeklickten ein Tag hinzufügen, dann entfernen Sie diese Klasse .. –

Antwort

3

Es ist nicht klar, was Sie zu tun versuchen, aber es sieht aus wie Sie die Klasse angeklickten Element hinzufügen möchten, und entfernen es von den all seinen Geschwister. Ihr aktueller Code fügt die Klasse zu demselben Element hinzu und entfernt sie, was letztendlich nichts bewirkt.

Sie wollen wahrscheinlich etwas wie

$(document).ready(function() { 
    $items = $('#accordion a.item'); // all the items 
    $items.click(function() { 
     $items.removeClass('selected'); // remove class from everything 
     $(this).addClass('selected'); // add class to clicked item 
     $('#accordion li').children('ul').slideUp('slow'); 
     $(this).siblings('ul').slideDown('slow'); 
    }); 
}); 
+0

ja! genau! es war mein Fehler, und natürlich endete es damit, nichts zu tun :) Ich wusste einfach nicht genau, wie man den Code umschreibt, danke! Sobald 8 Minuten vergehen, werde ich Ihre Antwort annehmen. –

0

Verwenden Sie ToggeleClass rahter dann adClass/ removeClass methos.

$("Selector").toggleClass('name of class',true); //apply class 
$("Selector").toggleClass('name of class',false); //remove class 
+0

-1: Meinst du das ernst? Der Code fügt eine Klasse hinzu und entfernt sie dann vom selben Element. Es funktioniert offensichtlich nicht. – Jon

+0

@Jon - Nach meinem Verständnis will er Klasse anwenden und dann eine Klasse aus dem Element entfernen wollen ...das ist y, dass ich diesen Weg verdaut habe ... irgendwie denke ich, dass ich auf dem falschen Weg bin ... aber toggleClass macht Sinn, wenn du die Klasse anwenden und entfernen willst. –

0

$(this) ist der Link angeklickt wird, nicht alle Link. Sie müssen die Klasse aller Links entfernen.

0

Die folgenden Zeilen in Ihren Funktionen hinzufügen und entfernen Klasse für das gleiche Element ausgewählt.

$(this).addClass('selected'); 
$(this).removeClass('selected'); 

da Sie das Hinzufügen und Entfernen-Klasse auf dem durch bezeichnet Element dieses, die das aktuelle Element ist (derjenige, der gerade geklickt wurde). In diesem Fall fügen Sie die ausgewählte Klasse zum angeklickten Element hinzu und entfernen sie sofort.

Was Sie tun müssen, ist

1- zuerst die Klasse aus beliebigen Elementen ausgewählt entfernen, die sie haben

2- die Klasse hinzufügen, auf das aktuelle Element durch bezeichnet ausgewählt diese

Ein Weg, es zu tun ist

$('#accordion a.selected').removeClass('selected'); 
$(this).addClass('selected'); 

hoffe, dass hilft.

Verwandte Themen