En jQuery, ¿se recomienda verificar si una clase ya está asignada a un elemento antes de agregar esa clase? ¿Tendrá algún efecto en absoluto?
Por ejemplo:
<label class='foo'>bar</label>
En caso de duda, si la clase baz
ya ha sido asignada label
, ¿sería este el mejor enfoque?
var class = 'baz';
if (!$('label').hasClass(class)) {
$('label').addClass(class);
}
o esto sería suficiente:
$('label').addClass('baz');
.hasClass
solo cuando necesito verificar si la clase existe, si solo necesito asignar una clase, uso.addClass
. jQuery no duplica las clasesRespuestas:
Solo llama
addClass()
. jQuery hará la verificación por usted. Si verifica por su cuenta, está duplicando el trabajo, ya que jQuery aún ejecutará la verificación por usted.fuente
Una simple comprobación en la consola le habría dicho que llamar
addClass
varias veces con la misma clase es seguro.Específicamente puedes encontrar el cheque en la fuente.
fuente
Esta pregunta llamó mi atención después de otra que se marcó como un duplicado de esta .
Esta respuesta resume la respuesta aceptada con un pequeño detalle adicional.
Está tratando de optimizar evitando una verificación innecesaria, en este sentido, aquí hay factores que debe tener en cuenta:
class="collapse"
en su HTML, llamarElement.classList.add("collapse");
no agregará una clase de colapso adicional . No conozco la implementación subyacente, pero supongo que debería ser lo suficientemente buena.addClass
yremoveClass
implementaciones (he comprobado el código fuente ). PorqueaddClass
, después de hacer algunas comprobaciones y si existe una clase, JQuery no intenta agregarla nuevamente. De manera similarremoveClass
, JQuery hace algo en la línea de locur.replace( " " + clazz + " ", " " );
cual eliminará una clase solo si existe.Cabe destacar que JQuery hace algunas optimizaciones en su
removeClass
implementación para evitar una re-renderización inútil. Dice asíEntonces, la mejor micro optimización que podría hacer sería con el objetivo de evitar los gastos generales de llamadas a funciones y las verificaciones de implementación asociadas.
Digamos que desea alternar una clase nombrada
collapse
, si tiene el control total de cuándo se agrega o quita lacollapse
clase , y si la clase está inicialmente ausente, entonces puede optimizar de la siguiente manera:Además, si está alternando una clase debido a cambios en la posición de desplazamiento, se recomienda encarecidamente que acelere el manejo del evento de desplazamiento.
fuente
fuente