web-dev-qa-db-ja.com

jQuery 1.9.1の「TypeError:jQuery.easing [this.easing] is not a function」

あまりにも多くの月で初めて(赤面)、jQueryのものをアップグレードしました。私は今です:

  • jquery-1.9.1.js
  • jquery-ui-1.10.2.custom.js(ThemeRollerを使用し、Effects Coreを含むすべてのコンポーネントが含まれています。これには、説明でイージングについて言及しています)

また、jquery.multiselectおよびjquery.multiselect.filterプラグインの最新バージョンにアップグレードしました。複数選択メニューの1つを閉じようとすると、次のエラーが発生します。

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

エラーが発生したときにmultiselectプラグインを使用していますが、実際のエラーはメインのjQueryファイルにあります。コードは次のとおりです。

/*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*/ }

一部のファイルを更新するのを忘れましたか?それについてググって、同じ苦情を持つ他の人はすべて、ある種の追加のイージングプラグインを使用しようとしているようですが、私はそうではありません。

9
OsakaWebbie

このエラーは、最初にjQuery 1.9。+にアップグレードするときに、サイト全体のさまざまなアニメーションで発生する可能性があります。イージングエフェクトの名前が変更されたためです!!!

http://api.jqueryui.com/easings/ を参照してください。役に立たないのは、jQueryUI.comサイトの古い例が更新されていないため、人々は古いアニメーション例の名前がは正しい。

例:アコーディオンパネルの「bounceslide」アニメーションは、「easeOutBounce」と呼ばれるものの近いバージョンになりました。文字列「bounceslide」は、この執筆時点ではまだサイトの例にあります: http://api.jqueryui.com/accordion/#option-animate

アニメーションタイプで言及されているハイパーリンクをたどり、コード内で新しい名前を試した後、アニメーションの名前が変更されたことに気づきました。

含める:

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

注:必要に応じてjquery UIバージョンを更新してください。

10

無効な2番目の引数の問題

これが私がこのエラーを受け取ったときのように誰かがこの質問につまずくのを助ける場合、別の可能な解決策を追加します。私のエラーは、fadeIn関数への2番目の引数がアニメーションの完了時に実行される「コールバック」関数ではなかったという事実が原因でした。 2番目の引数が関数でない場合、jQueryはそれが使用するイージングの一種であると想定します。私の2番目の引数は誤ってオブジェクトでした-関数だと思った

だから、私にとっては、

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

なりました:

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

匿名のenter関数に渡される引数の変更に注意してください。重要なことに、私の場合、これらの変数はAngularJSインジェクションでした。そのため、それらの順序は重要であり、名前ではありません。

2
dewd

@Legionarのコメントのおかげで、彼の提案されたバージョンへのアップグレード_1.13_は私にとってうまくいきました:

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

[〜#〜] update [〜#〜]このバージョンでは、outerHeight()関数を使用すると、CSS位置topがないため、ウィジェットの位置が正しくありません。 line#573を次のように変更すると、問題が修正されます。

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