web-dev-qa-db-ja.com

ダウンロードできる最新バージョンにjQueryを更新するにはどうすればよいですか?

Drupal 7を使用しています。これは、jQuery 1.4をデフォルトとして使用しています。最新バージョン(現在は1.7)に更新するにはどうすればよいですか?)

33
Karmacoma

1つの方法は、jQuery Update の開発バージョンをインストールすることです。これにより、jQuery 1.7を使用するオプションが提供されます( http://mysite.com/admin/config/development/jquery_update )の設定ページ。

ただし、現在、サイトの他の場所でJavaScriptが動作しないことがわかっています(たとえば、[フィールドの管理]ページのウィジェットドロップダウンが機能しなくなります)。あなたがそれを修正する準備ができているなら、そして他の小さな悩みがあれば、これはおそらくあなたの最善の策です。また、特定のリリースを使用するよりもバグが発生する可能性が高いため、モジュールの開発バージョンを使用することにはリスクがないわけではないことにも注意してください。

手動で実行したい場合は、サイトを期待どおりに機能させるために、多くのコアJavaScriptコードを書き直す必要があります。 jQueryはバージョン1.4/1.5と1.7の間で非常に多くの変更を加えたため、コアDrupal javascriptコードの多くは単純に動作しません。

JQuery 1.7のバージョンをドロップインする場合は、おそらく hook_js_alter() を実装し、コアjQueryファイルの設定を解除して、その場所に独自のjQueryファイルを追加できます。

function MYMODULE_js_alter(&$js) {
  $path = drupal_get_path('module', 'MYMODULE') . '/path/to/jquery.1.7.js';

  // Copy the current jQuery file settings and change
  $js[$path] = $js['misc/jquery.js'];

  // Update necessary settings
  $js[$path]['version'] = 1.7;
  $js[$path]['data'] = $path;

  // Finally remove the original jQuery
  unset($js['misc/jquery.js']);
}

それが終わったら、Developer Tools/Firebugを開くと、サイトの残りのJSを機能させるために必要なすべての変更が表示されます。

[〜#〜]更新[〜#〜]

JQueryの最新バージョン(執筆時点では-- 7.x-2. )により、jQueryをv1.8にアップデートできるようになりました。とてもかっこいい。

コメントでそれを指摘してくれたgoronのおかげで、 jQuery Multi モジュールも別のオプションです。彼も述べているように、このモジュールは安定したリリースを備えており、既存のjavascriptを壊すことはありません。

44
Clive

また、jqueryの複数のバージョンを使用できるようにするjquery multiモジュールの使用も検討する必要があります。すばらしいモジュールです。すべてのプロジェクトでDruapl 7および6に使用しています。

4
rreiss

hook_js_alter のドキュメントに触発され、次のように動作します。テーマのtemplate.phpに配置できます。 Drupalコアとの競合を回避するために、別の管理テーマを使用する必要があります。jquery-1.8.3.min.jsはテーマ内の「js」というフォルダーにあると想定しています(合わせて調整してください)。

function [theme_machine_name]_js_alter(&$javascript) {

  $javascript['misc/jquery.js']['data'] = drupal_get_path('theme', '[theme_machine_name]') .
    '/js/jquery-1.8.3.min.js';

  $javascript['misc/jquery.js']['version'] = '1.8.3';

}
</ code>
2
Shaun Dychko

ここであなたの目的が何であるかはわかりませんが、カスタムモジュール開発に特定のバージョンが必要なときは、 jQuery.noConflict を使用してそれを行うことができました。

これはjquery_updateモジュール(OPは気にしないようです)と比較すると追加の作業ですが、全体を台無しにするかどうかを心配する必要がないことを意味しますdrupalインストール。

0
doub1ejack