14

Web アプリケーションで jQuery 1.4.2 を使用しています。最近、新しいバージョンにアップグレードするよう提案されました。これまでのところ、IE7 と IE8 をサポートする必要があるため、1.9.1 へのアップグレードを検討しています。私たちのアプリケーションは、fancybox、cookie、tipsy、jcarousel などの多数のプラグインを使用しています。さらに、多くのスクリプト ファイルがあり、おそらく 50 前後のファイルがあります。そして、ファイルに埋め込まれたいくつかのスクリプト。これは大惨事になりそうな予感!誰かアドバイスはありますか?1.9.1 へのアップグレードはまだ開始されていません。必要に応じて、管理者に別のバージョンにアップグレードするよう説得できます。私たちの最も安全な賭けは何ですか?お知らせ下さい。

ありがとうございました!

4

4 に答える 4

12

コード内に残っている非推奨の関数を見てください。注意すべき大きなものは.live()、 と.delegate()に置き換えられた.on().attr()が置き換えられた.prop()、および.browser()です。新しいバージョンが登場したときにコードを更新してきましたが、非常に簡単でした (約 20K 行の js) ので、問題はないはずです。私が言及した機能から始めれば、ほとんどの問題は解決すると思います。次に、Migrateプラグインを見てください。

于 2013-05-13T03:43:07.677 に答える
3

jQuery で廃止され、バージョン 1.9 で削除された API または機能を検出して復元するために使用されるjQuery Migrate プラグインの使用を試みることができます。

于 2013-05-13T03:37:14.077 に答える
0
  1. offset位置プロパティでオプションを使用しないでください。たとえば、コード$element.position({my: 'center center', at: 'center center', offset: '5 -10'})を に置き換える必要があり$element.position({my: 'center center', at: 'center+5 center-10'})ます。
  2. $element.bind()、を使用してイベント ハンドラを割り当てないでください$element.live()。を使用してください。$element.delegate()$element.on()
  3. でブラウザ スニッフィングを使用しない$.browserでください。代わりに機能検出を使用してみてください ( $.support)。
  4. を使用しないでくださいdeferred.isRejected()。代わりdeferred.isResolved()に使用してください。deferred.state()を使用しないでください。代わりdeferred.pipe()deferred.then()メソッドを使用する必要があります。
  5. $elements.size()メソッドを使用せず、$elements.length代わりにプロパティを使用してください。メソッドはプロパティ.size()と機能的に同等です。.lengthただし、.length関数呼び出しのオーバーヘッドがないため、このプロパティが優先されます。
  6. ed「クリック」イベントのチェックボックス/ラジオの状態は.trigger()、ユーザーが開始したアクションと同じ状態になりました。
  7. の代わりに.data()、キーの命名規則を変更しました。( http://jqueryui.com/upgrade-guide/1.9/#changed-naming-convention-for-data-keys )。ui-dialogdialog
  8. を使用せず$.ui.contains()$.contains()代わりに使用してください。
  9. this.uuid各ウィジェット インスタンスには、一意の識別子とイベントの名前空間が既にありますthis.eventNamespace = "." + this.widgetName + this.uuid。同様のものを手動で生成しないでください。

元のアップグレード ガイドと変更点の完全なリスト:

于 2014-09-23T18:28:03.400 に答える