Commit c418b94e authored by Jeremy Dunck's avatar Jeremy Dunck Committed by Michał Gołębiowski

Fix #14164: assign className in addClass/removeClass only if changed. Close gh-1331.

parent 32e803c5
...@@ -9,7 +9,7 @@ var rclass = /[\t\r\n\f]/g; ...@@ -9,7 +9,7 @@ var rclass = /[\t\r\n\f]/g;
jQuery.fn.extend({ jQuery.fn.extend({
addClass: function( value ) { addClass: function( value ) {
var classes, elem, cur, clazz, j, var classes, elem, cur, clazz, j, finalValue,
i = 0, i = 0,
len = this.length, len = this.length,
proceed = typeof value === "string" && value; proceed = typeof value === "string" && value;
...@@ -38,8 +38,12 @@ jQuery.fn.extend({ ...@@ -38,8 +38,12 @@ jQuery.fn.extend({
cur += clazz + " "; 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({ ...@@ -48,7 +52,7 @@ jQuery.fn.extend({
}, },
removeClass: function( value ) { removeClass: function( value ) {
var classes, elem, cur, clazz, j, var classes, elem, cur, clazz, j, finalValue,
i = 0, i = 0,
len = this.length, len = this.length,
proceed = arguments.length === 0 || typeof value === "string" && value; proceed = arguments.length === 0 || typeof value === "string" && value;
...@@ -77,7 +81,12 @@ jQuery.fn.extend({ ...@@ -77,7 +81,12 @@ jQuery.fn.extend({
cur = cur.replace( " " + clazz + " ", " " ); 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;
}
} }
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment