¿Cuáles son los beneficios de usar attr()
en lugar de usar addClass()
en jquery?Ventajas de usar attr() sobre addClass en jquery
Respuesta
Cuando utiliza el método attr
para establecer la clase de cualquier elemento, anulará el nombre de clase existente con cualquier valor que pase como segundo argumento al método attr
.
Donde si usa el método addClass
para agregar cualquier clase a un elemento simplemente agregará la clase y también conservará las clases existentes. Si la clase para agregar ya existe, entonces simplemente la ignorará.
E.g.
<div id="div1" class="oldClass"></div>
Usando $('#div1').attr('class', 'newClass')
dará
<div id="div1" class="newClass"></div>
Donde como el uso de $('#div1').addClass('newClass')
dará
<div id="div1" class="oldClass newClass"></div>
lo que siempre es adviseable utilizar addClass
/removeClass
a manupulate clases de elementos HTML usando jQuery. Pero al final depende de su requerimiento qué usar cuando.
attr (a, b) establece el atributo "a" de un elemento en "b".
addClass (a) se suma la "a" a la clase un elemento
por ejemplo ...
HTML
<div id="box" class="myClass"></div>
Guión
$("#box").attr("class", "myOtherClass");
Resultado
<div id="box" class="myOtherClass"></div>
Y ...
HTML
<div id="box" class="myClass"></div>
Guión
$("#box").addClass("myOtherClass");
Re Enlaces sultado
<div id="box" class="myClass myOtherClass"></div>
jQuery:
.addClass()
es mucho mejor para el rendimiento.
Compruebe hacia fuera esta guía para el rendimiento de jQuery: http://net.tutsplus.com/tutorials/javascript-ajax/10-ways-to-instantly-increase-your-jquery-performance/
Uno de mis artículos favoritos.
addClass()
tiene varias ventajas sobre la manipulación de la clase con attr('class')
:
Es semánticamente más clara.
addClass
yremoveClass
manipulan el atributoclass
del elemento (o propiedadclassName
), y eso es todo. Es un poco más difícil para ellos hacer que el código te mienta. Si dijo$whatever.addClas("selected")
, obtendría un error de tiempo de ejecución, mientras que si dijo$whatever.attr('clas', 'selected')
, simplemente no parece hacer nada. Aún así "funcionaría" desde el punto de vista de JS, porque ¿quién sabe? Puede querer para establecer un atributoclas
. Ese es el tipo de cosas que sucede cuando intentas usar una navaja suiza como abrelatas.Funciona con múltiples clases. Si usa
attr
para agregar y eliminar clases CSS, y alguna vez habrá más de una (lo cual es bastante común, en realidad), tendría que hacer un procesamiento de cadenas para asegurarse de no molestar a ninguna otra clase aplicada o tener la misma clase repetida 50 veces.addClass
yremoveClass
hacen eso por usted.Aparentemente es mucho más rápido.
Realmente no puedo pensar en ningún beneficio de más de attr('class'...)
addClass
. Generalmente, attr
es para cuando no tiene otra forma incorporada de manipular el atributo. En este caso lo haces, por lo que probablemente deberías usar eso.
El único beneficio de attr()
Sé si es que funciona con SVG, addClass()
no.
Esta respuesta tiene algunos detalles https://stackoverflow.com/a/10257755/2393562
- 1. jQuery addClass no funciona
- 2. Ventajas de usar URLField sobre TextField?
- 3. jQuery .addClass y .fadeIn?
- 4. jQuery: seleccionar por clase después del cambio de clase por .addClass() o .attr()
- 5. ¿Puedo retrasar jQuery addClass?
- 6. jQuery addClass onClick
- 7. ¿Attr() en jQuery fuerza minúsculas?
- 8. interactuando sobre jQuery $ (this) .attr ('clase'). Split (" ") da resultados impares
- 9. ¿Qué ventajas tiene jQuery sobre otras bibliotecas de JavaScript?
- 10. simple jQuery addClass() no parece estar funcionando
- 11. jQuery performance, .css o addClass
- 12. ¿Ventajas de jQuery Widget sobre el objeto JS normal?
- 13. Ventajas de MySQLi sobre MySQL
- 14. JQuery - $ (this) .attr ('name')
- 15. Jquery addClass y Remove Class on hover
- 16. Ventajas de usar variables de condición sobre mutex
- 17. Ventajas de usar paquetes de SSIS sobre procedimientos almacenados?
- 18. ¿Cuáles son las ventajas de usar Objective-C sobre C++
- 19. ¿Cuáles son las ventajas de usar SVN sobre CVS?
- 20. removeAttr (x) vs. attr (x, '') en jQuery
- 21. ¿Cuáles son las ventajas de usar Ruby NArray sobre Array?
- 22. jQuery: prop vs attr ... aclaración
- 23. Ventajas de Parcelable sobre JSON
- 24. Ventajas de [HandleError] sobre Application_Error
- 25. Ventajas de Tesla sobre GeForce
- 26. jQuery .val() vs .attr ("valor")
- 27. Ventajas específicas de NServiceBus sobre RabbitMQ liso
- 28. jQuery addClass no aplica el estilo dinámicamente
- 29. .attr ('clase') no está definido en jQuery()
- 30. ¿Cómo verifico attr() vacío en jquery?
ejecutan las pruebas del mismo: http://jsperf.com/jquery-addclass-vs-attr-class –
rendimiento, mientras que a veces * * importante, no es el único factor decisivo de lo que es "bueno" o "malo". La pregunta presumiblemente pregunta acerca de los beneficios de cualquier tipo, no solo de forma rápida. – cHao
Para mí es addClass que es más rápido en jsperf.com ... Es una buena causa porque siempre utilicé addClass. Tenía miedo de cambiar todo :-p – user1040899