111 votes

Dois-je utiliser "hasClass" avant "addClass" ?

Je suis tombé sur le script suivant qui vérifie si un élément possède une classe. a et si ce n'est pas le cas, il l'ajoute :

if (!$("div").hasClass("a")){
   $("div").addClass("a");
}

Comme jQuery n'ajoutera pas la classe si elle existe déjà, cela pourrait être changé en :

$("div").addClass("a");

Cependant, l'utilisation de l'option hasClass d'abord, ou est-ce que cela utilise la même méthode qui addClass le fait de toute façon, et donc en dupliquant la logique ?

182voto

Jon Points 194296

El .hasClass() n'est pas utile car jQuery vérifiera également toujours de l'intérieur .addClass() . C'est juste du travail supplémentaire.

13voto

Gaby aka G. Petrioli Points 85891

Vous pouvez voir au code source : https://github.com/jquery/jquery/blob/master/src/attributes/classes.js#L38-L45 qu'ils vérifient si la classe existe lorsqu'ils utilisent addClass .

Il n'y a donc aucune raison d'utiliser le .hasClass() dans ce cas ( une exception serait si vous vouliez effectuer plus d'actions si l'élément n'avait pas la classe . )

6voto

chrisM Points 128

Pour ce que ça vaut, il y a une amélioration des performances avec .hasClass() dans mes tests limités : http://jsperf.com/jquery-hasclass-vs-addclass-and-removeclass

Cependant, même lorsque des .removeClass() est plusieurs fois plus lent dans Chrome, il atteint environ 70 000 opérations par seconde.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X