J'ai rencontré le script suivant qui vérifie si un élément a la classe a
, et sinon, 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, y a-t-il des améliorations de performances en utilisant hasClass
d'abord, ou est-ce en utilisant la même méthode que addClass
fait de toute façon, et donc en dupliquant la logique?
La vérification .hasClass()
n'est pas utile car jQuery vérifiera également toujours depuis .addClass()
. C'est juste un travail supplémentaire.
Vous pouvez voir dans le code source: https://github.com/jquery/jquery/blob/master/src/attributes/classes.js#L38-L45 qu'ils vérifient si la classe existe lors de l'utilisation de addClass
.
Il n'y a donc aucune raison d'utiliser la .hasClass()
dans ce cas .. ( une exception serait si vous vouliez effectuer plus d'actions si l'élément n'avait pas la classe. . )
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 la fonction autonome .removeClass()
signale plusieurs fois plus lentement dans Chrome, elle atteint environ 70 000 opérations par seconde.