web-dev-qa-db-fra.com

Comment obtenir le nom de la deuxième classe de element?

J'essaie de trouver comment récupérer le deuxième nom de classe d'un attribut de classe.

Par exemple, avoir:

<div class="something fooBar"></div>

Comment puis-je obtenir le deuxième cours nommé "fooBar"?

Je sais que vous pouvez ajouter, supprimer et vérifier une classe spécifique, mais je n’ai pas trouvé de documentation pour récupérer une seconde classe dans une variable.

57
CyberJunkie

Vous pouvez utiliser split comme ceci:

alert($('#divID').attr('class').split(' ')[1]);

Pour obtenir toutes les classes, vous pouvez le faire à la place:

var classes = $('#divID').attr('class').split(' ');

for(var i=0; i<classes.length; i++){
  alert(classes[i]);
}

Plus d'informations:

108
Sarfraz

Voici comment procéder en référençant un ID div

$(document).ready( function () {
  alert($('#yourDivID').attr('class').split(' ')[1]);
});

La fonction split vous permettra de scinder une chaîne avec le délimiteur spécifié. Cela retournera un tableau de vos valeurs séparées. Dans ce cas, retournera un tableau de noms de classe.

Référence pour scinder une autre méthode de chaîne http://www.javascriptkit.com/javatutors/string4.shtml

Vous devriez examiner les sélecteurs et fonctions jQuery suivants pour accéder aux classes.

Sélecteurs

http://api.jquery.com/class-selector/ sélectionner un élément dom avec la classe spécifiée

http://api.jquery.com/has-selector/ sélectionner un élément dom qui possède le sélecteur spécifié

Les fonctions 

http://api.jquery.com/addClass/ méthode pour ajouter une classe à un objet jQuery

http://api.jquery.com/removeClass/ méthode pour supprimer une classe dans un objet jQuery

http://api.jquery.com/toggleClass/ méthode pour basculer une classe en objet jQuery

http://api.jquery.com/hasClass/ méthode pour vérifier si un objet jQuery a la classe spécifiée

http://api.jquery.com/attr/ méthode pour récupérer les attributs d'un objet jQuery

Édité: Nice cheat sheet

 enter image description here

11
John Hartsock
// alerts "8"
alert($('<div class="something 8"></div>').attr('class').split(' ')[1]);
10
Matt Ball

sinon, il est toujours préférable d’utiliser les attributs data- * html pour garder une trace des états, par exemple $ ("div.example").

5
Yehia A.Salam

Vous pouvez obtenir la valeur de l'attribut class et la répartir sur l'espace.

secondClass = element.className.split(' ')[1];
4
Christoffer Klang

Ce n'est pas correct Si les classes séparent plus d'un espace et que vous obtenez une deuxième classe, vous obtenez vide ..__ Exemple:

<div class="something   fooBar"></div>
var classes = $('div').attr('class').split(' ');
alert('classes: ' + classes + '; length: ' + classes.length );
// classes: something,,,fooBar; 4 

J'utilise le code suivant:

/*
 *   el  - element
 *   num - class number
 */
function getNumClass(el, num) {

  var classes = el.split(' ');
  var newclasses = [];
  var ret;

  for (var i = 0; i < classes.length; i++) {

    ret = $.trim(classes[i]);
    if(ret.length > 0) {
      newclasses.length += 1;
      newclasses[newclasses.length-1] = ret;
    }
  }

  if (num > newclasses.length) return false;

  return newclasses[num - 1];
}
0
skeef