web-dev-qa-db-fra.com

"TypeError: jQuery.easing [this.easing] n'est pas une fonction" dans jQuery 1.9.1

Pour la première fois depuis trop de mois (rougir), j'ai mis à jour mon logiciel jQuery. Je suis maintenant sur:

  • jquery-1.9.1.js
  • jquery-ui-1.10.2.custom.js (utilisé avec ThemeRoller et incluait tous les composants, y compris le noyau d'effets, qui mentionne la facilité dans sa description)

J'ai également mis à niveau les versions les plus récentes des plugins jquery.multiselect et jquery.multiselect.filter. Lorsque j'essaie de fermer l'un des menus multisélectionnés, le message d'erreur suivant s'affiche:

TypeError: jQuery.easing[this.easing] is not a function
jquery-1.9.1.js (line 9033)

Notez que bien que j'utilise le plugin multiselect lorsque l'erreur se produit, l'erreur réelle se trouve dans le fichier principal jQuery. Le code est:

/*9031*/ if ( this.options.duration ) {
/*9032*/   this.pos = eased = jQuery.easing[ this.easing ](
/*9033*/     percent, this.options.duration * percent, 0, 1, this.options.duration
/*9034*/   );
/*9035*/ }

Ai-je oublié de mettre à jour un fichier? Googler à ce sujet, d'autres avec le même problème semblent tous essayer d'utiliser une sorte de plug-in de soulagement supplémentaire, mais je ne le suis pas.

8
OsakaWebbie

Cette erreur peut se produire dans diverses animations de votre site lors de la première mise à niveau vers jQuery 1.9. + Parce que les noms de l'effet d'accélération ont changé !!!

Voir http://api.jqueryui.com/easings/ Ce qui n’aide en rien, c’est que les anciens exemples du site jQueryUI.com n’ont pas été mis à jour, ce qui conduit les gens à penser que le vieil les exemples de noms sont corrects.

Exemple: L'animation des panneaux d'accordéon "Bounceslide" est maintenant une version rapprochée de quelque chose appelé "aisanceBoutonBounce". La chaîne "bounceslide" est toujours dans l'exemple des sites à ce jour: http://api.jqueryui.com/accordion/#option-animate

J'ai seulement réalisé que les noms d'animation avaient changé après avoir suivi le lien hypertexte mentionné dans les types animate et essayé les nouveaux noms dans mon code.

14

Comprendre:

<script type="text/javascript" src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>    

Remarque: mettez à jour la version de jquery UI si nécessaire.

9

2ème question d'argument invalide

Au cas où cela aiderait quelqu'un à trébucher sur cette question comme je l'avais fait quand j'ai eu cette erreur, j'ajouterai une autre solution possible. Mon erreur était due au fait que mon deuxième argument de la fonction fadeIn n'était pas une fonction de "rappel" à exécuter à la fin de l'animation. Si le deuxième argument n'est pas une fonction, jQuery s'attend à ce qu'il s'agisse d'un type d'accélération à utiliser. Mon 2ème argument était à tort un objet - Je pensais que c'était une fonction .

Donc pour moi

return {
  enter: function(element,classes,done){ //classes variable incorrectly added, making done an object
    element.fadeIn(1000,done);
  }
};

est devenu:

return {
  enter: function(element,done){ //remove classes variable as wasn't right for this situation - done is now a function
    element.fadeIn(1000,done);
  }
};

Notez que la modification des arguments a été transmise à ma fonction anonyme enter. Ce qui est important dans mon cas, ces variables étaient les injections d’AnngularJS, donc l’ordre dans lequel elles étaient placées était important, pas tellement leur nom.

2
dewd

Grâce au commentaire de @ Legionar, la mise à niveau vers sa version suggérée 1.13 a fonctionné pour moi:

https://github.com/ehynds/jquery-ui-multiselect-widget/archive/1.13.Zip

UPDATEdans cette version, l'utilisation de la fonction outerHeight() provoque la mauvaise position du widget, car il manque la position css top, le problème suivant est résolu pour la ligne 573: Le problème est résolu:

top: pos.top + button.outerHeight(false),
0
AamirR