web-dev-qa-db-ja.com

jQuery 1.xからjQuery 2.xへのアップグレード

JQuery 1.xからjQuery 2.xにアップグレードしようとしています。

JQuery 1.8とjQueryUI 1.8がありますが、jQuery 2.xにアップグレードしてWebアプリを強化したいと考えています。

ですから、私の質問はAjaxeventsのように、何を変更して削除するかです。

私が話しているこれらのエラーのように

Uncaught TypeError: Object [object Object] has no method 'live'

.on()や.ajax()などの関数は変更されましたか? (.liveが非推奨になったことは知っています)。

追伸jQuery 2を使用するZurb Foundation 5を追加する必要があります。

47
ucefkh

JQuery 1.xからjQuery 2.xへのアップグレードを検討している場合は、これを考慮して次の手順を実行する必要があります:):

1。IE6/7/8のサポートはこれ以上ありません

IE8を放棄するのはまだ時期尚早だと思いますが、チームはもう待つことができませんでした。 jQuery 2.0は、ノード選択、DOM操作、イベント処理、およびAjaxのすべてのレガシーIEコードを削除します。

2。バージョン2.0でカスタムビルド機能が改良されました

12個の未使用モジュールのいずれかを除外し、jQueryを10Kb未満に縮小できます。省略できるモジュールは次のとおりです。 関数のリスト

アップグレードする必要がありますか?

JQuery 2.0にはjQuery 1.9と同等のAPIがあることを理解することが重要です。バグ修正は少数ですが、新機能はありません。

ただし、IE6/7/8のサポートを終了した幸運な開発者の1人であれば、jQuery 2.0を入手し、振り返らないでください。

35
ucefkh
  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. .trigger() ed「クリック」イベントのチェックボックス/ラジオ状態は、ユーザーが開始したアクションと同じ状態になりました。
  7. .data()キーの命名規則を変更しました。例:dialogの代わりに_ui-dialog_。 ( http://jqueryui.com/upgrade-guide/1.9/#changed-naming-convention-for-data-keys )。
  8. $.ui.contains()を使用せず、代わりに$.contains()を使用してください。
  9. 各ウィジェットインスタンスには、一意の識別子_this.uuid_とイベント名前空間_this.eventNamespace = "." + this.widgetName + this.uuid_が既にあります。同様のことを手動で生成しないでください。
  10. $element.focus(n)を使用しないでください-非推奨です。 setTimeout(function() { $element.focus(); }, n);を使用します。
  11. $element.zIndex()を使用しないでください-非推奨です。
  12. _$.ui.keyCode.NUMPAD_*_定数は使用しないでください-削除されます。
  13. $element.data('someWidget')を使用してウィジェットインスタンスを取得しないでください。 instance()メソッドを使用します:$element.someWidget('instance')。他のプラグインメソッドとは異なり、instance()メソッドはどの要素でも安全に呼び出すことができます。要素が指定されたウィジェットのインスタンスでない場合、メソッドはundefined$('<div></div>').dialog('instance') /* returns undefined instead of throwing Error */を返します。

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

70
Victor

JQuery 1.9では、以前のバージョンのjqueryで使用できたいくつかのメソッドが削除されました。

これらの方法を使用している場合、はい、問題が発生します。

それ以外の場合、問題は発生しません。

前述のjQuery移行プラグインを使用すると、1.8から1.9+(2.xを含む)にアップグレードする際に発生する可能性のあるすべての問題が解決され、使用しているメソッドが削除されたときに通知されますコンソールを見ます。移行プラグインは、jqueryを1.6x-1.8xから1.9 +/2.0 +にアップグレードする最良の方法です。 jquery 2.xを含めてから、移行プラグインを含め、コンソールを開いて、移行プラグインが警告を表示しなくなるまで古いメソッドを置き換えます。その時点で、移行プラグインを安全に削除できるはずです。

3
Kevin B