Me preguntaba si era más eficiente/más rápido cambiar múltiples atributos con jQuery o simplemente cambiar y reemplazar todo el html de una sola vez. Este es el código que estoy usando en este momento.
// shows the table and changes the image to up showTable = function(tableId){ $('#img' + tableId).attr("src", images["up"]).attr("alt", "Hide Table").attr("title", "Hide Table"); $('#' + tableId).fadeIn(250); }¿O sería esto más rápido?
// shows the table and changes the image to up showTable = function(tableId){ $('#img' + tableId).replaceWith('some html'); $('#' + tableId).fadeIn(250); }$('#greatphoto').attr({ alt: 'Beijing Brush Seller', title: 'photo by Kelly Clark' });Ejemplo tomado de jQuery Documentation .
Dado que tarda un cuarto de segundo en desvanecerse en el resultado y esto no es un ciclo cerrado, no notará ninguna diferencia de rendimiento entre los dos. Como señala yan.kun, puede hacer que el código sea un poco más conciso usando la versión de conjunto múltiple (mapa) de attr , pero con tres atributos que no están en un ciclo cerrado, no va a hacer una diferencia de velocidad . (Si lo fuera, evitaría llamar a attr por completo y usaría las propias propiedades reflejadas del elemento: src , alt y title se reflejan).
Dicho esto, hay otras razones para actualizar elementos en lugar de reemplazarlos. Por ejemplo, si tiene controladores adjuntos a los elementos, si actualiza los atributos de los elementos, los controladores permanecerán adjuntos; si reemplaza los elementos, los controladores no se adjuntan (porque se adjuntaron a los antiguos). Reemplazar elementos también provoca un reflujo, que puede ser significativo (o no) según la estructura de su DOM.