前提・実現したいこと
CakePHPを使用して、データの検索/一覧表示画面を作成しています。
検索項目がたくさんあるので、詳細な条件についてはjQueryのslideDown/slideUp関数を使用して
任意で表示/非表示を切り替えられるようにしています。
検索結果の一覧は検索条件の下に表示されるのですが、
Excelの行列固定のような形で見せたいという要望があったので
ブラウザ上の検索条件の下を一つのブロックとし、overflow:scroll;を指定して
ボックス内でスクロールさせる、という手法を取りました。
この一覧表示が出力されているときに、検索条件で隠した状態のものを表示させたときに
検索条件のエリアの高さをouterHeight関数で取得し、切り替える度に一覧表示の高さを
設定し直す…ということをしているのですが、実際に取得できる値がslideDown/slideUpする以前の数値のようで
正しくリサイズされず、困っています。
どうにかこの問題を解決したいと思っています。
どなたか、お知恵をお借りできないでしょうか?
よろしくお願いいたします。
該当のソースコード
javascript
1 // 詳細検索見出しがクリックされたとき 2 $('#search_conditions_h').on('click', function() { 3 if ($('#search_conditions').hasClass('hidden')) { 4 $('#search_conditions').slideDown(); 5 // $('#search_conditions').slideDown(400, resize_list()); 6 $('#search_conditions').removeClass('hidden'); 7 } else { 8 $('#search_conditions').slideUp(); 9 // $('#search_conditions').slideUp(400, resize_list()); 10 $('#search_conditions').addClass('hidden'); 11 } 12 // resize_list(); 13 setTimeout(resize_list(), 5000); 14 }); 15 16 17 function resize_list() { 18 // 検索条件の縦幅を取得 19 var window_height = $(window).height(); 20 var search_condition_box_height = $('#search_condition').outerHeight(true); 21 var table_height = window_height - search_condition_box_height; 22 $('.table_height').css('height', table_height + 'px'); 23 }
試したこと
- sildeDown/slideUp関数が完全に終わった後にリサイズするよう、setTimeout関数で実行時間を調整
→時間を極端に変更しても、特に取得できる値に影響がありませんでした
- slideDown/slideUp関数の引数に実行時間、コールバック処理を記載
→こちらもsetTimeout同様、あまり意味がありませんでした
- 最初に画面を表示したときにデフォルトの値を取得しておき、その値で計算していく
→ブラウザ幅を縮めたときなどの所為に対応しきれず断念しました
補足情報(FW/ツールのバージョンなど)
- jQueryバージョン:3.4.1
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/10/21 01:26