J'utilise ce code pour obtenir le nom spécifique de chaque classe à l'intérieur d'un élément en fonction de leur position d'attribut dans la liste d'attributs de classe
Par exemple, si je veux obtenir la deuxième classe à l'intérieur du nom div
Ce code renvoie tous les noms de classes
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div class="cl1 cl2 cl3" id="banner-message"></div>
mais je n'ai besoin que du second!
#banner-message {
background: #ccc;
border-radius: 4px;
padding: 20px;
font-size: 25px;
text-align: center;
transition: all 0.2s;
margin: 0 auto;
width: 300px;
}
$("#banner-message").on('click', function(){
var FirstclassName = $(this).attr('class');
// var SecondclassName = $(this).attr('class');
// var ThirdclassName = $(this).attr('class');
console.log(FirstclassName);
});
var SecondclassName = $(this).attr('class');
4 Réponses :
La classList est une DOMTokenList, qui est un tableau semblable à une construction, sur l'élément qui contient toutes les classes.
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div class="cl1 cl2 cl3" id="banner-message"></div>
#banner-message {
background: #ccc;
border-radius: 4px;
padding: 20px;
font-size: 25px;
text-align: center;
transition: all 0.2s;
margin: 0 auto;
width: 300px;
}
$("#banner-message").on('click', function(){
console.log(this.classList[1]);
});
C'est la manière vanille, mais il n'est pas nécessaire d'avoir une manière jQuery. Afaik, cela fonctionne dans tous les navigateurs.
caniuse.com/#search=classList La prise en charge de classList existe depuis longtemps. Vous devrez être dans un navigateur très ancien pour que cela ne fonctionne pas.
JavaScript a une propriété intégrée sur tous les éléments classList - puisque vous voulez le second, utilisez [1] . Utilisez la déstructuration pour obtenir les trois:
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div class="cl1 cl2 cl3" id="banner-message"></div>
#banner-message {
background: #ccc;
border-radius: 4px;
padding: 20px;
font-size: 25px;
text-align: center;
transition: all 0.2s;
margin: 0 auto;
width: 300px;
}
$("#banner-message").on('click', function(){
var [FirstclassName, SecondclassName, ThirdclassName] = this.classList;
console.log(FirstclassName);
console.log(SecondclassName);
console.log(ThirdclassName);
var second = this.classList[1];
console.log(second);
});
Vous pouvez également diviser le résultat obtenu avec attr () et adresser chaque élément par son index comme ceci:
$("#banner-message").on('click', function(){
var array = $(this).attr('class').split(' ');
var FirstclassName = array[0]
// var SecondclassName = array[1];
// var ThirdclassName = array[2];
console.log(FirstclassName);
});
mais il est conseillé d'utiliser classList car il vous fournit déjà le tableau
Vous souhaitez utiliser la propriété classList qui renvoie le (s) nom (s) de classe d'un élément.
<div id="myDiv" class="first second third">
</div>
console.log(document.getElementById("myDiv").classList[1]);
renverra "second".