2012-01-24 6 views
2

J'essaie de changer le nom de classe d'un ASPxClientLabel de javascript. Comment faire ça?Comment changer le nom d'une classe en utilisant jquery?

J'ai essayé ceci:

Cette étiquette est à l'intérieur du contrôle répéteur:

<dx:ASPxLabel ID="labelShortName" runat="server" CssClass="shortNameItemLink" 
ClientSideEvents-Click="function(s, e){ ShortName_Clicked(s, e); }" 
Text='<%#DataBinder.Eval(Container.DataItem, "ShortName")%>'> 
</dx:ASPxLabel> 

Ce label commence comme "cliqué"

<dx:ASPxLabel ID="labelShowAll" runat="server" 
ClientSideEvents-Click="function(s, e){ ShortName_Clicked(s, e); }" Text="Show All" 
CssClass="shortNameItemLinkClicked"></dx:ASPxLabel> 

[JS]

<script type="text/javascript"> 
    function ShortName_Clicked(s, e) { 
     var selectedText = s.GetText(); 
     var items = $('.shortNameItemLinkClicked'); 
     items.removeClass(); 
     items.addClass('shortNameItemLink'); 
     $(s).className = "shortNameItemLinkClicked"; 
} 
</script> 

Je reçois "undefin" ed "erreur.

Des idées?

+0

vous ne pouvez pas renommer la classe ... vous pouvez ajouter ou supprimer un existant puis ajouter un requis – Vivek

+0

De votre code, j'ai trouvé que la fonction "ShortName_Clicked" manquant fermeture} .Etes-vous oublié de coller ici? .Si vous manquez-le, ce sera un problème. – sathishkumar

+0

@sathishkumar - merci. J'ai mis à jour. –

Répondre

0

Désolé de mettre ma propre réponse, mais aucun des autres ne semblait fonctionner.

Je l'ai fixé comme ceci:

<script type="text/javascript"> 
    function ShortName_Clicked(s, e) { 
     var selectedText = s.GetText(); 
     $('.shortNameItemLinkClicked') 
     .removeClass() 
     .addClass('shortNameItemLink'); 

     $('#' + s.name) 
     .removeClass("shortNameItemLink") 
     .addClass("shortNameItemLinkClicked"); 
    } 
</script> 

de documentation DevExpress: ASPxClientLabel

grâce @ShankarSangoli pour refactorage enchaînant méthode.

2

Essayez ceci.

function ShortName_Clicked(s, e) { 
     var selectedText = s.GetText(); 
     $('.shortNameItemLinkClicked') 
     .removeClass() 
     .addClass('shortNameItemLink'); 
     $(s).attr('class', 'shortNameItemLinkClicked'); 
} 
+0

Vous manquez un '' ':) – Johan

+0

@Johan - Corrigé :) – ShankarSangoli

1

Avez-vous essayé

$(s).attr("class","shortNameItemLinkClicked"); 

?

+0

J'ai essayé maintenant, mais pour une raison quelconque, il ne semble pas fonctionner. Quand ça marche (j'ai utilisé un élément span), une petite flèche apparaît à côté de l'élément sur lequel j'ai cliqué. Je n'ai pas d'erreur, mais je n'ai pas de flèche non plus. Je dois y regarder de plus près, je suppose. –

1

Il semble que vous effectuez votre ajout/suppression en arrière. Essayez ce qui suit

function ShortName_Clicked(s, e) { 
    $('.shortNameItemLink').removeClass().addClass('shortNameItemLinkClicked'); 
} 
1

Les noms de classe ne correspondent pas tout à fait à vos HTML et jQuery. Essayez ceci:

<script type="text/javascript"> 
    function ShortName_Clicked(s, e) { 
     var selectedText = s.GetText(); 

     $('.shortNameItemLink').removeClass().addClass('shortNameItemLinkClicked'); 
    } 
</script> 

J'ai aussi ajouté l'accolade fermante car il ne figurait pas dans votre exemple - Je ne sais pas si cela était juste une faute de frappe.

+0

Désolé, j'ai ajouté le balisage manquant. –

1
$(s).className = "shortNameItemLinkClicked"; 

devrait être $(s).get(0).className = "shortNameItemLinkClicked";

ou si vous connaissez le nom de classe existante

$(s).removeClass("shortNameItemLink").addClass("shortNameItemLinkClicked"); 
Questions connexes