addClass question

addClass question

I don't know if this is the right forum to post this in, but I have a question about the addClass code in jquery. I just looked through the code and noticed it doesn't use a regex to check for classes so I'm assuming that the string checks it does is faster. But I don't understand why it uses indexOf... isn't that slower than just doing a comparison between the currently looped class and the new class?


This is the snippet of code I'm referring to (line 1244):

  1. if ( !elem.className ) {
  2. elem.className = value;
  3. } else {
  4. var className = " " + elem.className + " ", setClass = elem.className;
  5. for ( var c = 0, cl = classNames.length; c < cl; c++ ) {
  6. if ( className.indexOf( " " + classNames[c] + " " ) < 0 ) {
  7. setClass += " " + classNames[c];
  8. }
  9. }
  10. elem.className = jQuery.trim( setClass );
  11. }

Couldn't it just be this instead:

  1. if ( !elem.className ) {
  2. elem.className = value;
  3. } else {
  4. var setClass = value;
  5. for ( var c = 0, cl = classNames.length; c < cl; c++ ) {
  6. if ( classNames[c] != value ) ) {
  7. setClass += " " + classNames[c];
  8. }
  9. }
  10. elem.className = jQuery.trim( setClass );
  11. }