J'essaie de trouver comment récupérer le deuxième nom de classe d'un attribut de classe.
<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.
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:
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
// alerts "8"
alert($('<div class="something 8"></div>').attr('class').split(' ')[1]);
sinon, il est toujours préférable d’utiliser les attributs data- * html pour garder une trace des états, par exemple $ ("div.example").
Vous pouvez obtenir la valeur de l'attribut class et la répartir sur l'espace.
secondClass = element.className.split(' ')[1];
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];
}