職場の多数のサイトを非常に古いバージョンの 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 の問題に対するかなりクリーンな解決策のように思えますが、最初の修正は ... 本来の修正にはほど遠いものだと感じずにはいられません。
この機能を再導入するための「標準的な」方法はありますか?そうでない場合、より良い方法はありますか?
乾杯。