Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

361
Views
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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!