$("#myDiv").addClass("carrot");
3 Réponses :
Cela se passe parce que JQuery est également ajouté à la classe dans la liste des classes, puis en cours d'exécution Jetez un coup d'œil au source pour garniture code> sur la chaîne entière. p>
addclass < / code>
pour voir ce qui se passe. p>
On dirait que JQuery fait la garniture après avoir ajouté la classe. Voir le code JQuery AddClass ci-dessous,
addClass: function( value ) { var classNames, i, l, elem, setClass, c, cl; if ( jQuery.isFunction( value ) ) { return this.each(function( j ) { jQuery( this ).addClass( value.call(this, j, this.className) ); }); } if ( value && typeof value === "string" ) { classNames = value.split( rspace ); for ( i = 0, l = this.length; i < l; i++ ) { elem = this[ i ]; if ( elem.nodeType === 1 ) { if ( !elem.className && classNames.length === 1 ) { elem.className = value; } else { //HERE IS APPENDS ALL CLASS IT NEEDS TO ADD setClass = " " + elem.className + " "; for ( c = 0, cl = classNames.length; c < cl; c++ ) { if ( !~setClass.indexOf( " " + classNames[ c ] + " " ) ) { setClass += classNames[ c ] + " "; } } elem.className = jQuery.trim( setClass ); } } } } return this; }
En regardant la source, je suppose qu'il n'y a aucune raison de cela:
setClass = " " + jQuery.trim(elem.className) + " ";
Je suppose que cela a à voir avec la vitesse. Est-ce que cela provoque une erreur?
Cela ne devrait pas causer d'erreurs, alors cela compte vraiment?
C'est une question intéressante néanmoins.
Editeur: J'améliore votre jsfiddle pour une meilleure vue
FYI, il ne devrait être pas grave d'avoir un espace supplémentaire occasionnel entre les cours.