ajax呼び出しからコンテンツを受信しているdivがあります。今、私はajaxコールバックハンドラーでこれを行っています:
function searchCallback(html) { $("#divSearchResults").html(html); }
これにより、コンテンツがページに「ポップ」し、非常に突然になります。.slideToggle()メソッドのように、divを適切にサイズ変更する方法はありますか?
非表示になっていることを確認してから、コンテンツを追加してスライドさせます。
$("#divSearchResults").hide();
$("#divSearchResults").html(html);
$("#divSearchResults").slideDown();
または、フェードインすることもできます:
$("#divSearchResults").fadeIn();
コンテンツが表示されたときにページが「爆発」しないようにするには、div が非表示になっていることを確認してください。また、コンテンツが追加されたら、ページが正常に表示されることを確認してください。
そもそもそれを隠しておくことができます。次に、htmlを挿入し、その機能が完了したら、表示効果を実行します。(slideToggleのように)
これが機能するかどうかはわかりませんが、試す価値はあります。
もちろん、これを試すことができます:
function searchCallback(html) {
var html_hidden = $('<div style="display:none;" class="hidden_insert">'+html+'</div>');
$('#divSearchResults').html(html);
$('#divSearchResults .hidden_insert').slideDown('medium');
}
最も美しいものではありませんが、うまくいくでしょう。クラス 'hidden_insert' の CSS スタイルを作成して、そのクラスの要素をデフォルトで非表示にすることで、きれいにすることができます。また、この日付の送信元であるバックエンドでは、JavaScript の代わりにそこでラッピングを行うことができます。スクリプトは次のように簡略化できます。
function searchCallback(html) {
$('#divSearchResults').html(html).find('.hidden_insert').slideDown('medium');
}
これらのいずれもテストしていませんが、動作するはずです。