Jquery Chaining vs Callbacks

Pour jQuery, quelle est la différence entre le résultat des deux extraits suivants? N’importe quoi? Ai-je raison de dire que le rappel et le deuxième élément de la chaîne sont exécutés à la fin de la première animation?

$(selector).animate({ opacity: 1 }).animate({ opacity: 0.5 }); 

contre

 $(selector).animate({ opacity: 1}, function() { $(this).animate({ opacity: 0.5 }); }); 

Dans quel (s) type (s) de situation pourrais-je utiliser l’un par rapport à l’autre? Est-ce que je n’utiliserais ce dernier que si j’avais besoin de faire quelque chose de plus sophistiqué ou de changer de sélecteur?

Merci d’avance.

    En réalité, ils sont identiques, vous utiliserez probablement simplement le premier.

    Les rappels (la deuxième version) servent à exécuter tout code arbitraire qui n’est pas automatiquement mis en queue.

    Cela inclut d’autres méthodes jQuery, telles que .css() , qui, si elles ne figurent pas dans le rappel, seront exécutées bien avant la fin de l’animation.

     // .animate() is automatically queued $(selector).animate({ opacity: 1 }).animate({ opacity: 0.5 }); 

     // .css() is not automatically queued, so you'd need a callback $(selector).animate({ opacity: 1 }, function() { $(this).css({ opacity: 0.5 }); }); 

    Sans le rappel …

      // Animation starts ----v $(selector).animate({ opacity: 1 }).css({ opacity: 0.5 }); // ...but .css() runs immediately-------------^ // ...because it isn't automatically added to the queue. 

    La seule différence est le timing: le rappel du deuxième exemple ne sera exécuté qu’une fois l’animation terminée. L’animation chaînée du premier exemple aura lieu immédiatement après le début de la première animation.