私は大きなアプリケーションをかなり古い 1.11.2 から最新の jQuery 3.0 にアップグレードすることに取り組んでいます。私たちの機能の一部を壊すかなり微妙な変更を見つけました:
いくつかの複雑なウィジェットをインスタンス化するとき、最初は css を使用して一部の要素を非表示にします (表示なし)。次に、show/hide を使用して要素を表示します。
ただし、表示/非表示の呼び出しは、ウィジェットが DOM にアタッチされる前に発生する可能性があります。1.11.2 では要素がアタッチされていない場合、表示/非表示は正常に機能していましたが、3.0.0 では機能しません。
デモ:
1.11.2: https://jsfiddle.net/7j9xawc2/1/
.tabCompositeSearchWidget-ClearButton
{
/* Clear button is initially hidden */
display: none;
}
var e = document.createElement('div');
$(e).addClass('tabCompositeSearchWidget-ClearButton');
$(e).text('blah');
$(e).show();
$('#root').append($(e));
alert($(e).is(":visible"));
古いバージョンでは要素が表示され、アラートは と表示されますがtrue
、最新のバージョンでは表示されず、アラートは表示されますfalse
そのような使用法をすべて見つけるのは難しいので、それを修正する最善の方法に興味があります: ここで最善の修正は何ですか? 古い方法で動作するように jquery.js ファイルを手動で変更しますか? (本当はやりたくない)
更新: 1 回限りのケースの修正は簡単です。しかし、そのような呼び出しが潜在的に数十あり、それらすべてを見つけて修正するには多大な労力が必要であり、効果的ではありません。