$("#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.