Question Obtenir le nom de la classe en utilisant jQuery


Je veux obtenir le nom de la classe en utilisant jQuery

Et s'il a un identifiant

<div class="myclass"></div>

529
2018-03-08 09:43


origine


Réponses:


Après avoir obtenu l'élément en tant qu'objet jQuery par d'autres moyens que sa classe, alors

var className = $('#sidebar div:eq(14)').attr('class');

devrait faire l'affaire. Pour l'utilisation d'ID .attr('id').

Si vous êtes dans un gestionnaire d'événements ou une autre méthode jQuery, où l'élément est le noeud DOM pur sans wrapper, vous pouvez utiliser:

this.className // for classes, and
this.id // for IDs

Les deux sont des méthodes DOM standard et bien pris en charge dans tous les navigateurs.


957
2018-03-08 09:45



Il vaut mieux utiliser .hasClass() quand vous voulez vérifier si un élément a un particulier class. C'est parce que lorsqu'un élément a plusieurs class Ce n'est pas trivial à vérifier.

Exemple:

<div id='test' class='main divhover'></div>

Où:

$('#test').attr('class');        // returns `main divhover`.

Avec .hasClass() nous pouvons tester si le div a la classe divhover.

$('#test').hasClass('divhover'); // returns true
$('#test').hasClass('main');     // returns true

204
2018-06-09 04:57



Attention, peut-être, vous avez une classe et une sous-classe.

  <div id='id' class='myclass mysubclass' >dfdfdfsdfds</div>

Si vous utilisez des solutions précédentes, vous aurez:

myclass mysubclass

Donc, si vous voulez avoir le sélecteur de classe, faites ce qui suit:

var className = '.'+$('#id').attr('class').split(' ').join('.')

et vous aurez

.myclass.mysubclass

Maintenant, si vous voulez sélectionner tous les éléments qui ont la même classe, comme div ci-dessus:

   var brothers=$('.'+$('#id').attr('class').split(' ').join('.'))

cela signifie

var brothers=$('.myclass.mysubclass')

Mise à jour 2018

OU peut être implémenté avec vanilla javascript en 2 lignes:

  const { classList } = document.querySelector('#id');
  document.querySelectorAll(`.${Array.from(classList).join('.')}`);

35
2018-05-25 20:53



C'est pour obtenir la deuxième classe dans plusieurs classes en utilisant dans un élément

var class_name = $('#videobuttonChange').attr('class').split(' ')[1];

26
2017-11-08 04:11



vous pouvez simplement utiliser,

var className = $('#id').attr('class');


15
2018-02-18 11:31



Si ton <div> a un id:

​<div id="test" class="my-custom-class"></div>​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​

...tu peux essayer:

var yourClass = $("#test").prop("class");

Si ton <div> n'a qu'un class, tu peux essayer:

var yourClass = $(".my-custom-class").prop("class");

9
2018-05-12 16:32



Si vous utilisez la fonction split pour extraire les noms de classe, vous devrez alors compenser les variations de formatage potentielles qui pourraient produire des résultats inattendus. Par exemple:

" myclass1  myclass2 ".split(' ').join(".")

produit

".myclass1..myclass2."

Je pense qu'il vaut mieux utiliser une expression régulière pour correspondre à l'ensemble des caractères autorisés pour les noms de classe. Par exemple:

" myclass1  myclass2  ".match(/[\d\w-_]+/g);

produit

["myclass1", "myclass2"]

L'expression régulière n'est probablement pas complète, mais j'espère que vous comprenez mon point de vue. Cette approche atténue la possibilité d'un mauvais formatage.


6
2017-08-17 02:34