0

データベース検索の結果を含むdivを含むWebページを生成するJavaサーブレットを開発しています。

このdivの高さはパーセンテージ(動的高さ)として定義され、コンテンツには表示/非表示ボタン(動的コンテンツ)があります。表示および非表示機能は、div要素の「onclick」属性によってアクティブ化されます。

最初に、このページのjavascript(JScrollPaneDynamicHeight)を使用して、動的な高さとこのメソッドを実現しようとしました。

function refreshNav() {  
var pane = $('YOUR SELECTOR');  
var api = pane.data('jsp');  
api.reinitialise();  
}

... show / hiddenメソッドによって呼び出されます。reinitialise()メソッドを呼び出して動的コンテンツを許可します。

正しく機能しませんでした。一部のクリックでは機能し、他のクリックではスクロールペインが再表示されずに消え、その逆も同様でした。

また、変数「api」をグローバルにしようとしました-同じ問題です。

ここにあるjsを使用して試した最新のもの(段落を追加せずにのみ)。迅速な応答とCPUアクティビティの間にはトレードオフがあるため、コンテンツまたは高さが変更されたかどうかを説明するブール値をチェックするifステートメントを追加しました。「console.log()」を使用して、すべてが正常に機能していることを確認しました(ブール値の変更、ifステートメントの実行など)。

それは...しかし、私はまだJScrollPaneで同じ問題を抱えています。

htmlの「onclick」属性を使用するのは悪い習慣だとどこかで読んだことがありますが、これは適切でしょうか?

何がうまくいかないのかについてのアイデアをいただければ幸いです。

乾杯、

スコット

4

2 に答える 2

0

ここで見つけた回答のおかげで、許容できる回避策を書きました。

唯一の欠点は、CPU の作業が少し必要なことですが、常に再初期化するほどではありません。すべてをタイマーに設定するのではなく、このサイズ変更プラグインを使用しようとしましたが、何らかの理由で 2 回再初期化されることがありました。これは、スムーズな jquery ショー アニメーションの途中で、スクロールバーが再初期化される間、少し停止することを意味していました。

まぁ。それはこのように動作します:

- 75 ミリ秒ごとに、ウィンドウの高さとコンテナーの高さが変更されているかどうかがチェックされます - その場合、スクロールバーは 100 ミリ秒後に再初期化するように設定されます - 何かが引き続きサイズ変更される場合、再初期化コマンドは再び 100 にリセットされます

$(document).ready(function(){

var windowHeight = $(window).height();
var containerHeight = $('#container').height();
var resized;

setInterval(function(){

    if(windowHeight!=$(window).height() || containerHeight!=$('#container').height())
    {
        clearTimeout(resized);
        resized = setTimeout(function(){api.reinitialise();}, 100);
    }

    windowHeight = $(window).height();
    containerHeight = $('#container').height();

},75);

});
于 2012-06-20T08:28:11.737 に答える