2010-03-25 6 views
0

J'essaie d'ajouter une classe à certains éléments d'entrée en fonction du type, donc si c'est type = 'text' je veux ajouter une classe .txt et si c'est typt = ' bouton 'Je veux ajouter .btn class. J'ai essayé quelques trucs mais si la chance, il ajoute. Text à tous:Ajouter une classe en fonction de l'attribut dans jquery

 var text_type = $('#right input').attr('type'); 


     if(text_type=='text'){ 
      $('#right input').addClass('text'); 
     } 
     else if(text_type=='button'){ 
      $('#right input').addClass('btn'); 
     }; 

Comment puis-je y parvenir? Merci d'avance.

Mauro

Répondre

3
$('#right input[type="text"]').addClass('text'); 
$('#right input[type="button"]').addClass('btn'); 

Attribute equals selector.

+0

gentil gentil +1 – mcgrailm

+0

Thx Stefan! Pourquoi je n'ai pas pensé à ça avant! était si facile !!! Je suis tellement f ** king stupide parfois! – Mauro74

+0

Il m'a fallu un certain temps pour utiliser efficacement les sélecteurs d'attribut. Quand vous y pensez pour la première fois, la forme conventionnelle de la pensée obtient le type et le comportement des cas spéciaux. Une fois que vous commencez à penser en magie jQuery, les choses deviennent plus faciles. La raison pour laquelle votre code original a appliqué "text" à tout est $ ("# right input"). AddClass ajoute la classe à TOUTES les entrées! Vous auriez besoin d'itérer sur les entrées et ensuite comparer, mais cela devient bâclé assez rapidement. Les sélecteurs d'attribut résolvent ce cas d'utilisation exact. –

0

Je pense que ce que vous voulez faire est quelque chose comme ceci si vous ajoutez la classe sur toutes les entrées qui ont un type de texte.

$ ("input [type = 'text']"). AddClass ("text");

Questions connexes