diff --git a/src/attributes/classes.js b/src/attributes/classes.js index 170787c83..aed8db88a 100644 --- a/src/attributes/classes.js +++ b/src/attributes/classes.js @@ -9,7 +9,7 @@ var rclass = /[\t\r\n\f]/g; jQuery.fn.extend({ addClass: function( value ) { - var classes, elem, cur, clazz, j, + var classes, elem, cur, clazz, j, finalValue, i = 0, len = this.length, proceed = typeof value === "string" && value; @@ -38,8 +38,12 @@ jQuery.fn.extend({ cur += clazz + " "; } } - elem.className = jQuery.trim( cur ); + // only assign if different to avoid unneeded rendering. + finalValue = jQuery.trim( cur ); + if ( elem.className !== finalValue ) { + elem.className = finalValue; + } } } } @@ -48,7 +52,7 @@ jQuery.fn.extend({ }, removeClass: function( value ) { - var classes, elem, cur, clazz, j, + var classes, elem, cur, clazz, j, finalValue, i = 0, len = this.length, proceed = arguments.length === 0 || typeof value === "string" && value; @@ -77,7 +81,12 @@ jQuery.fn.extend({ cur = cur.replace( " " + clazz + " ", " " ); } } - elem.className = value ? jQuery.trim( cur ) : ""; + + // only assign if different to avoid unneeded rendering. + finalValue = value ? jQuery.trim( cur ) : ""; + if ( elem.className !== finalValue ) { + elem.className = finalValue; + } } } }