Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

457
Visualizações
jQuery .hasClass() frente a .is()

¿Existe un método preferido para determinar si a un elemento se le asigna una clase, desde el punto de vista del rendimiento?

 $('#foo').hasClass('bar');

o

 $('#foo').is('.bar');
over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Actualizar:

Comprometí una prueba después de un comentario y cuatro votos a favor para comentar. Resulta que lo que había dicho es la respuesta correcta. Aquí está el resultado:

ingrese la descripción de la imagen aquí

http://jsperf.com/hasclass-vs-is-so


El is es multipropósito, puede, por ejemplo, hacer is('.class') , is(':checked') , etc., lo que significa is tiene más que hacer donde hasClass está limitado, lo que solo verifica si se está configurando una clase o no.

Por lo tanto, hasClass debería ser más rápido si el rendimiento en cualquier nivel es su prioridad.

over 4 years ago · Santiago Trujillo Relatório

0

Dado is es más genérico que hasClass y usa un filter para procesar la expresión proporcionada, parece probable que hasClass sea más rápido.

Ejecuté el siguiente código desde la consola 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();

Obtuve:

  • utilizando: 3191.663ms
  • utilizandoHas: 2362.523ms

No es una gran diferencia, pero puede ser relevante si está haciendo muchas pruebas.

EDITAR cuando digo 'no es una gran diferencia', mi punto es que necesitas hacer 10000 ciclos para ver 0.8 s de diferencia. Me sorprendería ver una aplicación web en la que cambiar de is a hasClass vería una mejora significativa en todo el rendimiento. Sin embargo, reconozco que esto es una mejora del 35% en la velocidad.

over 4 years ago · Santiago Trujillo Relatório

0

Ambos deberían estar bastante cerca en términos de rendimiento pero $('#foo').hasClass('bar'); me parece más legible y semánticamente correcto.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda