5

職場の多数のサイトを非常に古いバージョンの jQuery (1.2.6、1.4.3) から最新バージョン (1.9.1) にアップグレードしようとしています。1.6.4 から 1.9.1 の場合のみですが、移行スクリプトがほとんどの作業を行っています。ソートが必要なその他の変更はほとんど完了していると思います。

私が遭遇した問題がいくつかありますが、主なものは から.attr()への変更です.prop()- 私たちのコードはすべて使用して.attr()おり、.prop() を使用するように変更しただけで一部が壊れるため、特にいくつかのリンクが使用されていますストア内の製品のフィルタリング - これらは AJAX 呼び出しを呼び出し、クリックされると他の処理を行います。

私の最初の「修正」(非常に大きな航空引用符で)は、通話を一方から他方にリダイレクトすることに基づいていました。

$.fn.attr = $.fn.prop;

最初に壊れていたものは修正されましたが、これによりバグの全世界が導入されると確信しています。それ以来、(これまでのところとにかく) それによって引き起こされたもう 1 つのバグに気付きました。それは、href 属性 (# で始まるアンカーである可能性があります) が完全な正規化された URL - http://を返すことです。 jsfiddle.net/eT6xE/1/

<a href="#something"><span>Product Details</span></a>
<div></div>

$('div').append( $('a').attr('href') );
$('div').append( '<br />' + $('a').prop('href') );
// #something  \n  http://fiddle.jshell.net/eT6xE/1/show/#something

それが私が気づいた唯一のバグであることを考えると、少し遊んで回避策を考え出しました - http://jsfiddle.net/M92CE/1/ - オリジナルを再導入するのにうまくいくようです機能。これは、href attr/prop の問題に対するかなりクリーンな解決策のように思えますが、最初の修正は ... 本来の修正にはほど遠いものだと感じずにはいられません。

この機能を再導入するための「標準的な」方法はありますか?そうでない場合、より良い方法はありますか?

乾杯。

4

1 に答える 1

5

jQuery 1.9では、以前のバージョンで廃止された多くの古い機能が削除されました。jQuery 1.2 から 1.9 に移行すると、かなりの数のエラーが発生することがほぼ確実です。

幸いなことに、jQuery 1.9 には、古いバージョンとの後方互換性のためにjQuery Migrateと呼ばれるコンパニオン ライブラリがあり、1.9 で削除された古い非推奨の機能をすべて元に戻します。

古いコードを元に戻し、最新の jQuery バージョンで実行する必要がある場合は、jQuery Migrate を使用して機能させます。

ただし、Migrate ライブラリの目的は、新しい機能への移行を支援することであり、コードを過去にとどめておくことを許可することではないことに注意してください。そのため、Migrate を使用してコードを機能させますが、Migrate が不要になるようにコードの変更を検討する必要があります。

持っているコードの量によっては、かなりの作業になるかもしれませんが、Migrate を使用すると、一度にすべてを修正するのではなく、これらの変更を 1 つずつ行うことができます。

それが役立つことを願っています。

于 2013-04-15T12:11:58.573 に答える