From: Jeremy Dunck Date: Mon, 19 Aug 2013 15:55:05 +0000 (+0200) Subject: Fix #14164: assign className in addClass/removeClass only if changed. Close gh-1331. X-Git-Tag: 2.1.0-beta1~80 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=c418b94eb48188cd9329519ae5e030a52dd81cc9;p=jquery.git Fix #14164: assign className in addClass/removeClass only if changed. Close gh-1331. --- 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; + } } } }