jQuery と IE9/IE10 に問題があります。テーブルのリスト (多くの行がある場合もあります) を含む単純なページがあり、ユーザーがクリックして必要なものを非表示にできるようにしたいと考えています。そこで、ユーザーがテーブルの名前をクリックすると、この最後のテーブルが上にスライドするようにしました。それは次のようなものです:
$(thisId + "title").bind('click', function() {
$(thisId + "span div:not(" + thisId + "title)").each(function() {
$(this).slideToggle("medium");
});
});
すべてが機能します!テーブルが上にスライドし、コンテンツの高さが必要に応じて縮小または拡大します。FF、Chrome、Operaでは問題ありません。IE では、コンテンツが縮小または拡大しますが、スクロールバーの高さはまったく変わりません! そのため、ユーザーは古いコンテンツの高さに沿ってスクロールできます (ただし、そこには何も表示されません)。簡単に言うと、IE は古いウィンドウの高さを保持します。タスクバーのウィンドウを縮小してコールバックすると、ページが更新された場合と同様に、高さが正しくなります。
ユーザーがテーブルの 1 つを上下にスライドするたびにウィンドウの高さを再計算して変更しようとしましたが、これは少し面倒で、IE10 では機能しないようです。
私はこれまでこの問題を抱えたことがなく、それは私を夢中にさせます. 誰か手を貸してくれませんか?それは非常に高く評価されます。ありがとう!
編集: ロード時にすべての要素を非表示にしてからそれらを開こうとしました(この情報をデータベースに保存する必要があるため、どの要素を開くかはわかっています...)。うまくいきました...しかし、テーブルの1つを下にスライドすると、水平スクロールバーが表示されます...
編集2: IE9では動作するがIE10では動作しないように見える少し醜いものを作成しました。ページが読み込まれるときに、テーブルの 1 つを非表示にする必要がある場合は、スクロールバーを非表示にしてから再度表示します。したがって、ページの高さは適切です。次に、ユーザーが別のテーブルを非表示にすることを決定した場合、同じことを行い、次のようにしてウィンドウの高さを変更します。
var newHeight = $(window).height() - $(this).height();
$(window).height(newHeight);
IE では、一度に行うことが多すぎてスクロール バーが更新されないなどの「遅延」の問題があるようです。他のブラウザでは問題ありません。
編集 3:最後に、.show() と hide.() を使用してテストをやり直し、テーブルが閉じられたときにこれらの行を追加しました
var newWinHeight = $(window).height() - tempHeight;
$(window).height(newWinHeight);
$("body").css("overflow-y","hidden","important");
$("body").css("overflow-y","auto","important");
FF、Chrome、Opera、IE 9 で動作しました。しかし、残念ながら IE 10 ではありません。正しい値を取得するには、IE は「全体」をリロードする必要があるようです。