2009-10-22 7 views
0

J'essaie de réinitialiser une classe pour tous les liens qui ont été précédemment sélectionnés en supprimant la fin d'un nom de classe.Jquery relace partie de chaîne dans une classe

Lorsque le lien est cliqué sur la classe est ajouté avec "_selected" afin que l'image reste en surbrillance. Quand un autre lien est cliqué, j'essaye de supprimer "_selected" de n'importe quel lien qui a pu avoir été précédemment sélectionné (beaucoup de renversements sur la page). ..

On dirait que ce qui suit devrait fonctionner:

$ ('a') attr ('class') remplacer (/ _ sélectionné/g, '');

Cela ne cherche-t-il pas tous les liens avec les classes et remplace les instances de "_selected" par rien?

Existe-t-il une meilleure façon de voir cela? Nouveaux jQuery ... Merci

Répondre

2

Vous pouvez mettre plus d'un cours dans un élément, comme:

<a class="someClass selected" /> 

Ainsi, avec jQuery:

$("a.selected").removeClass("selected"); 

et bien sûr vous avez précédemment ajouté avec

$("your-selector").addClass("selected"); 

Et vous devez définir, bien sûr

<style> 
A.selected { 
    /*your styles here*/ 
} 
</style> 

Pas exactement ce que vous voulez, mais je pense qu'il est ce que vous avez besoin :)

En fait, ce que vous voulez est:.

$("a").each(function(){ 
    $(this).attr("class", $(this).attr("class").replace(/_selected/g,"")); 
}); 
+0

L'option de classes multiples a fonctionné assez bien pour cette situation. Je ne me suis même pas présenté. Merci beaucoup! – Kerri

0

$ ('a') attr (« classe ») retournera la chaîne « class » pour chaque jQuery « a » éléments et non l'élément lui-même ...

Je pense que vous devriez faire quelque chose comme ça:

$ (« a »). chacun (function() { $ (This) .attr ('class', $ (this) .attr ('class'). Replace (/ _ sélectionné/g, ''));

});

Questions connexes