jquery - ¿Debo usar "hasClass" antes de "addClass"?
performance (3)
Esta pregunta ya tiene una respuesta aquí:
He encontrado la siguiente secuencia de comandos que comprueba si un elemento tiene clase a
, y si no, lo agrega:
if (!$("div").hasClass("a")){
$("div").addClass("a");
}
Como jQuery no agregará la clase si ya existe, esto podría cambiarse a:
$("div").addClass("a");
Sin embargo, ¿hay alguna mejora en el rendimiento mediante el uso de hasClass
primero, o se está utilizando el mismo método que addClass
hace de todos modos, y por lo tanto la duplicación de la lógica?
La comprobación .hasClass()
no es útil porque jQuery también siempre verificará desde .addClass()
. Es solo trabajo extra.
Por lo que vale, hay una mejora en el rendimiento con .hasClass()
en mis pruebas limitadas: http://jsperf.com/jquery-hasclass-vs-addclass-and-removeclass
Sin embargo, incluso cuando el .removeClass()
independiente .removeClass()
varias veces más lento en Chrome, llega a aproximadamente 70,000 operaciones por segundo.
Puede ver en el código fuente: https://github.com/jquery/jquery/blob/master/src/attributes/classes.js#L38-L45 que comprueban si la clase existe cuando se usa addClass
.
Entonces no hay ninguna razón para usar .hasClass()
en este caso ... ( una excepción sería si quisiera realizar más acciones si el elemento no tiene la clase ... )