y a-t-il une méthode préférée de déterminer si un élément est assigné une classe, d’un point de vue performances ?
ou
y a-t-il une méthode préférée de déterminer si un élément est assigné une classe, d’un point de vue performances ?
ou
J'ai commis un test à la suite d'un commentaire et quatre upvotes très commentaire. Il s'avère que ce que j'avais dit, c'est la bonne réponse. Voici le résultat:
http://jsperf.com/hasclass-vs-is-so
L' is
est multi-usage, vous pouvez par exemple faire is('.class')
, is(':checked')
,, etc, qui signifie is
a plus à voir où est - hasClass
est limitée qui vérifie uniquement pour une classe ou pas.
Par conséquent, hasClass
devrait être plus rapide si la performance à n'importe quel niveau est votre priorité.
Depuis is
est plus générique que l' hasClass
et utilisations filter
pour traiter la condition de l'expression, il semble probable que l' hasClass
est plus rapide.
J'ai couru le code suivant à partir de la console de Firebug:
function usingIs() {
for (var i=0; i<10000;i++) {
$('div#example-0').is('.test');
}
}
function usingHas(){
for (var i=0; i<10000;i++) {
$('div#example-0').hasClass('test');
}
}
usingIs();
usingHas();
J'ai eu:
Pas une énorme différence, mais peut être utile si vous êtes en train de faire beaucoup de tests.
EDIT quand je dis " pas une énorme différence, mon point est que vous devez faire 10000 cycles afin de voir 0,8 s de différence. Je serais surpris de voir une application web telles que le passage d' is
de hasClass
serait une amélioration significative de plus de toutes les performances. Cependant, je vous l'accorde que c'est une amélioration de 35% de la vitesse.
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.